Browse Source

Quellcode Java von HIS-BI 2026.06 #10

kern_tomcat10_test_his
Daniel Quathamer 1 week ago
parent
commit
036c241dc9
  1. 9
      src/de/memtext/util/CryptUtils.java
  2. 5161
      src/de/statspez/plausi/astat/csv/Abschluss3steller_Land.csv
  3. 46
      src/de/statspez/plausi/astat/csv/Hochschule.csv
  4. 44
      src/de/statspez/plausi/astat/csv/HochschuleErsteinschreibung.csv
  5. 61
      src/de/statspez/plausi/astat/csv/Hochschulfachbereich.csv
  6. 55
      src/de/statspez/plausi/astat/csv/Hochschulstandort.csv
  7. 6
      src/de/statspez/plausi/astat/csv/Staat.csv
  8. 487634
      src/de/statspez/plausi/astat/csv/StudienfachMerkmalsKombination.csv
  9. 29810
      src/de/statspez/plausi/astat/csv/Studienfach_Land.csv
  10. BIN
      src/de/statspez/plausi/generated/PL-Pruefungen-ERHEBUNG_GASTHOERER_2026_02_26.pdf
  11. 68
      src/de/statspez/plausi/generated/PL-Pruefungen-Gasthoerer_2026_02_26.csv
  12. 616
      src/de/statspez/plausi/generated/PL-Pruefungen-PROMOVIERENDE_2026_02_26.csv
  13. BIN
      src/de/statspez/plausi/generated/PL-Pruefungen-PROMOVIERENDE_2026_02_26.pdf
  14. 3033
      src/de/statspez/plausi/generated/PL-Pruefungen-STUD_PRUEF_AB_SS2017_2026_02_18.csv
  15. BIN
      src/de/statspez/plausi/generated/PL-Pruefungen-STUD_PRUEF_AB_SS2017_Stand_2026_02_18.pdf
  16. 352
      src/de/statspez/plausi/generated/Plausi_ERHEBUNG_GASTHOERER_2019.java
  17. 1666
      src/de/statspez/plausi/generated/Plausi_ERHEBUNG_GASTHOERER_2019.xml
  18. BIN
      src/de/statspez/plausi/generated/Plausi_ERHEBUNG_GASTHOERER_2019_Descriptor.data
  19. 496
      src/de/statspez/plausi/generated/Plausi_ERHEBUNG_PROMOVIERENDE_AB_2017.java
  20. 4239
      src/de/statspez/plausi/generated/Plausi_ERHEBUNG_PROMOVIERENDE_AB_2017.xml
  21. BIN
      src/de/statspez/plausi/generated/Plausi_ERHEBUNG_PROMOVIERENDE_AB_2017_Descriptor.data
  22. 728
      src/de/statspez/plausi/generated/Plausi_ERHEBUNG_PROMOVIERENDE_AB_2017_Segment1.java
  23. 18279
      src/de/statspez/plausi/generated/Plausi_ERHEBUNG_STUDENTEN_PRUEFUNGEN_AB_2017.java
  24. 19648
      src/de/statspez/plausi/generated/Plausi_ERHEBUNG_STUDENTEN_PRUEFUNGEN_AB_2017.xml
  25. BIN
      src/de/statspez/plausi/generated/Plausi_ERHEBUNG_STUDENTEN_PRUEFUNGEN_AB_2017_Descriptor.data
  26. 1218
      src/de/statspez/plausi/generated/Plausi_ERHEBUNG_STUDENTEN_PRUEFUNGEN_AB_2017_Segment1.java
  27. 60
      src/de/superx/access/DbSqlRestrictionProvider.java
  28. 82
      src/de/superx/access/FromItemVisitor.java
  29. 139
      src/de/superx/access/InlineSelectVisitor.java
  30. 109
      src/de/superx/access/SchemaSelectVisitor.java
  31. 111
      src/de/superx/access/SqlAccessRestrictor.java
  32. 8
      src/de/superx/access/SqlRestrictionProvider.java
  33. 343
      src/de/superx/access/StatementVisitor.java
  34. 20
      src/de/superx/bianalysis/ColumnElementBuilder.java
  35. 6
      src/de/superx/bianalysis/ExcelSheetBuilder.java
  36. 18
      src/de/superx/bianalysis/JoinCriteria.java
  37. 26
      src/de/superx/bianalysis/ReportDefinition.java
  38. 347
      src/de/superx/bianalysis/ReportMetadata.java
  39. 244
      src/de/superx/bianalysis/ResultBuilder.java
  40. 158
      src/de/superx/bianalysis/ResultMerger.java
  41. 26
      src/de/superx/bianalysis/SecondaryFacttable.java
  42. 2
      src/de/superx/bianalysis/bin/BiAnalysisCLI.java
  43. 123
      src/de/superx/bianalysis/jasper/JasperReportJson.java
  44. 24
      src/de/superx/bianalysis/jasper/JasperReportJsonWrapper.java
  45. 4
      src/de/superx/bianalysis/metadata/MetaImport.java
  46. 5
      src/de/superx/bianalysis/metadata/MetaImportConformedDimensions.java
  47. 76
      src/de/superx/bianalysis/metadata/MetadataImporter.java
  48. 67
      src/de/superx/bianalysis/metadata/models/json/MetaDimension.java
  49. 8
      src/de/superx/bianalysis/metadata/models/json/MetaDimensionAttribute.java
  50. 4
      src/de/superx/bianalysis/models/CriteriaGroup.java
  51. 40
      src/de/superx/bianalysis/models/Dimension.java
  52. 64
      src/de/superx/bianalysis/models/DimensionAttribute.java
  53. 27
      src/de/superx/bianalysis/models/FactTable.java
  54. 5
      src/de/superx/bianalysis/models/Filter.java
  55. 5
      src/de/superx/bianalysis/models/Info.java
  56. 30
      src/de/superx/bianalysis/models/Measure.java
  57. 5
      src/de/superx/bianalysis/models/Right.java
  58. 3
      src/de/superx/bianalysis/models/RightParam.java
  59. 14
      src/de/superx/bianalysis/repository/DimensionRepository.java
  60. 12
      src/de/superx/bianalysis/repository/dto/AttributeDto.java
  61. 14
      src/de/superx/bianalysis/repository/dto/DimensionDto.java
  62. 7
      src/de/superx/bianalysis/repository/dto/FactDto.java
  63. 6
      src/de/superx/bianalysis/repository/dto/MeasureDto.java
  64. 5
      src/de/superx/bianalysis/repository/dto/MeasureFilterDto.java
  65. 32
      src/de/superx/bianalysis/rest/BiAnalysisAdminApi.java
  66. 111
      src/de/superx/bianalysis/rest/BiAnalysisApi.java
  67. 148
      src/de/superx/bianalysis/service/BiAnalysisManager.java
  68. 2592
      src/de/superx/bianalysis/service/DbMetaAdapter.java
  69. 203
      src/de/superx/bianalysis/service/JasperReportExport.java
  70. 296
      src/de/superx/bianalysis/service/UserRestrictionService.java
  71. 77
      src/de/superx/bianalysis/sqlgeneration/AttributeGroupQueryBuilder.java
  72. 231
      src/de/superx/bianalysis/sqlgeneration/SQLGenerator.java
  73. 124
      src/de/superx/bianalysis/sqlgeneration/SQLGeneratorDrillAcross.java
  74. 14
      src/de/superx/bianalysis/sqlgeneration/SQLGeneratorTotals.java
  75. 22
      src/de/superx/bin/AbstractWebserviceClient.java
  76. 25
      src/de/superx/bin/ComponentAdminCLI.java
  77. 12
      src/de/superx/bin/DoShutdown.java
  78. 26
      src/de/superx/bin/Doquery.java
  79. 16
      src/de/superx/bin/Doschema.java
  80. 41
      src/de/superx/bin/Dosql.java
  81. 20
      src/de/superx/bin/Dostmt.java
  82. 52
      src/de/superx/bin/ExecuteMask.java
  83. 8
      src/de/superx/bin/FMParser.java
  84. 27
      src/de/superx/bin/SimpleTransform.java
  85. 98
      src/de/superx/bin/SxJdbcClient.java
  86. 54
      src/de/superx/bin/SxTransformer.java
  87. 6
      src/de/superx/bin/WebserviceChecker.java
  88. 26
      src/de/superx/bin/WebserviceClient.java
  89. 14
      src/de/superx/bin/WebserviceClientBewegungsdaten.java
  90. 24
      src/de/superx/bin/WebserviceClientBewegungsdatenAlt.java
  91. 16
      src/de/superx/bin/WebserviceClientBewegungsdatenByFistl.java
  92. 17
      src/de/superx/bin/WebserviceClientBseg.java
  93. 16
      src/de/superx/bin/WebserviceClientBsegHoh.java
  94. 14
      src/de/superx/bin/WebserviceClientFiposGroupsHoh.java
  95. 14
      src/de/superx/bin/WebserviceClientHier.java
  96. 18
      src/de/superx/bin/WebserviceClientKenn.java
  97. 18
      src/de/superx/bin/WebserviceClientSummendaten.java
  98. 6
      src/de/superx/bin/XUpdater.java
  99. 6
      src/de/superx/db/HikariSqlExceptionOverride.java
  100. 46
      src/de/superx/db/export/ExportConfig.java
  101. Some files were not shown because too many files have changed in this diff Show More

9
src/de/memtext/util/CryptUtils.java

@ -7,7 +7,6 @@ import java.util.StringTokenizer;
import javax.crypto.Cipher; import javax.crypto.Cipher;
import javax.crypto.NoSuchPaddingException; import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec; import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.digest.Crypt;
/** /**
* *
@ -78,15 +77,7 @@ public class CryptUtils {
} }
return encrypted.toString(); return encrypted.toString();
} }
public static String encodeSHA512(String txt) {
if (txt ==null || txt.length() > 1000) {
throw new RuntimeException("Passwort ist ungültig");
}
byte txtArray[] = txt.getBytes();
return Crypt.crypt(txtArray, "$6$0q5233a66a3e9bea16f3139bfe4f6ce50ced591deafbc4b9ef56d6ae60fe9c4b22aa78dbd704bde57c");
}
public static String encryptSimple(String s) { public static String encryptSimple(String s) {
int i = 0; int i = 0;
byte pad[] = s.getBytes(); byte pad[] = s.getBytes();

5161
src/de/statspez/plausi/astat/csv/Abschluss3steller_Land.csv

File diff suppressed because it is too large Load Diff

46
src/de/statspez/plausi/astat/csv/Hochschule.csv

@ -1,6 +1,6 @@
001;10725;U Kassel;20042;99999;1; 001;10725;U Kassel;20042;99999;1;
002;60515;APOLLON H der Gesundheitswirtschaft Bremen (Priv. FH);20102;99999;6; 002;60515;APOLLON H der Gesundheitswirtschaft Bremen (Priv. FH);20102;99999;6;
003;60265;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus München (Priv. FH);20182;99999;6; 003;60265;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus München (Priv. FH);20252;99999;6;
004;61074;FH der Diakonie Bielefeld-Bethel (Kirchl. FH);20171;99999;6; 004;61074;FH der Diakonie Bielefeld-Bethel (Kirchl. FH);20171;99999;6;
006;60129;Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Mannheim (FH);20222;99999;6; 006;60129;Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Mannheim (FH);20222;99999;6;
008;11034;U Duisburg-Essen;20062;99999;1; 008;11034;U Duisburg-Essen;20062;99999;1;
@ -144,7 +144,7 @@
202;40705;Phil.-Theol. H Frankfurt a.M. (Kirchl.-Theol. H);20171;99999;4; 202;40705;Phil.-Theol. H Frankfurt a.M. (Kirchl.-Theol. H);20171;99999;4;
203;41020;Theol. Fakultät Paderborn (Kirchl.-Theol. H);20171;99999;4; 203;41020;Theol. Fakultät Paderborn (Kirchl.-Theol. H);20171;99999;4;
204;41105;Theol. Fakultät Trier (Kirchl.-Theol. H);20171;99999;4; 204;41105;Theol. Fakultät Trier (Kirchl.-Theol. H);20171;99999;4;
205;41110;Vinzenz Pallotti University Vallendar (Kirchl.-Theol. H);20221;99999;4; 205;11140;Vinzenz Pallotti University gGmbH Vallendar (Kath. U);20252;99999;1;
206;41025;Kölner H für Katholische Theologie (Kirchl.-Theol. H);20211;99999;4; 206;41025;Kölner H für Katholische Theologie (Kirchl.-Theol. H);20211;99999;4;
208;41015;Phil.-Theol. H Münster (Kirchl.-Theol. H);20171;99999;4; 208;41015;Phil.-Theol. H Münster (Kirchl.-Theol. H);20171;99999;4;
210;60267;SRH University of Applied Sciences Heidelberg in Fürth und München (Priv. FH);20252;99999;6; 210;60267;SRH University of Applied Sciences Heidelberg in Fürth und München (Priv. FH);20252;99999;6;
@ -160,7 +160,6 @@
230;10175;H für jüdische Studien Heidelberg (Kirchl. U);20171;99999;1; 230;10175;H für jüdische Studien Heidelberg (Kirchl. U);20171;99999;1;
232;40715;Luth.-Theologische H Oberursel (Kirchl.-Theol. H) ;20171;99999;4; 232;40715;Luth.-Theologische H Oberursel (Kirchl.-Theol. H) ;20171;99999;4;
235;41405;Theol. H Friedensau (Kirchl.-Theol. H);20171;99999;4; 235;41405;Theol. H Friedensau (Kirchl.-Theol. H);20171;99999;4;
236;60930;FH für Interkulturelle Theologie Hermannsburg (Priv. FH);20171;99999;6;
241;60642;Northern Business School Hamburg (Priv. FH);20141;99999;6; 241;60642;Northern Business School Hamburg (Priv. FH);20141;99999;6;
242;10420;Medizinische Hochschule Brandenburg in Neuruppin (Priv. U);20171;99999;1; 242;10420;Medizinische Hochschule Brandenburg in Neuruppin (Priv. U);20171;99999;1;
243;51040;Alanus H Alfter (Priv. Kunst-H);20171;99999;5; 243;51040;Alanus H Alfter (Priv. Kunst-H);20171;99999;5;
@ -226,7 +225,7 @@
324;61645;Duale Hochschule Gera-Eisenach (FH);20162;99999;6; 324;61645;Duale Hochschule Gera-Eisenach (FH);20162;99999;6;
326;61540;DHSH - Duale Hochschule Schleswig-Holstein, Kiel (Priv. FH);20182;99999;6; 326;61540;DHSH - Duale Hochschule Schleswig-Holstein, Kiel (Priv. FH);20182;99999;6;
327;10365;German International University Berlin (Priv. U);20192;99999;1; 327;10365;German International University Berlin (Priv. U);20192;99999;1;
329;10430;HMU Health and Medical University Erfurt in Potsdam (Priv. U);20231;99999;1; 329;10430;HMU Health and Medical University Potsdam in Potsdam (Priv. U);20252;99999;1;
336;60345;Digital Business University Berlin (Priv. FH);20192;99999;6; 336;60345;Digital Business University Berlin (Priv. FH);20192;99999;6;
337;10227;Technische Universität Nürnberg;20211;99999;1; 337;10227;Technische Universität Nürnberg;20211;99999;1;
343;60608;Berufliche Hochschule Hamburg (FH);20212;99999;6; 343;60608;Berufliche Hochschule Hamburg (FH);20212;99999;6;
@ -254,7 +253,7 @@
403;B0705;Akademie für Tonkunst Darmstadt;20172;99999;B; 403;B0705;Akademie für Tonkunst Darmstadt;20172;99999;B;
404;B0710;Berufsakademie Rhein-Main Rödermark (Private BA);20172;99999;B; 404;B0710;Berufsakademie Rhein-Main Rödermark (Private BA);20172;99999;B;
405;B0715;Brüder-Grimm-Berufsakademie Hanau (Private BA);20172;99999;B; 405;B0715;Brüder-Grimm-Berufsakademie Hanau (Private BA);20172;99999;B;
406;B0720;Dr. Hoch's Konservatorium - Musikakademie Frankfurt am Main;20172;99999;B; 406;B0720;Dr. Hoch's Konservatorium - Musikakademie Frankfurt am Main (Priv.);20252;99999;B;
407;B0725;Europäische Studienakademie Kälte-Klima-Lüftung (ESaK) Maintal (Private BA);20172;99999;B; 407;B0725;Europäische Studienakademie Kälte-Klima-Lüftung (ESaK) Maintal (Private BA);20172;99999;B;
408;B0730;Hessische Berufsakademie Frankfurt (Private BA);20172;99999;B; 408;B0730;Hessische Berufsakademie Frankfurt (Private BA);20172;99999;B;
409;B0760;Internationale Berufsakademie der F+U Unternehmensgruppe Darmstadt (iba) (Private BA);20172;99999;B; 409;B0760;Internationale Berufsakademie der F+U Unternehmensgruppe Darmstadt (iba) (Private BA);20172;99999;B;
@ -274,6 +273,7 @@
426;B0718;Deutsche Berufsakademie Sport und Gesundheit (dba) in Baunatal (Private BA);20172;99999;B; 426;B0718;Deutsche Berufsakademie Sport und Gesundheit (dba) in Baunatal (Private BA);20172;99999;B;
427;B0945;Berufsakademie Wilhelmshaven (Private BA);20192;99999;B; 427;B0945;Berufsakademie Wilhelmshaven (Private BA);20192;99999;B;
428;B1230;Berufsakademie Heimerer GmbH, Quierschied (Private BA);20202;99999;B; 428;B1230;Berufsakademie Heimerer GmbH, Quierschied (Private BA);20202;99999;B;
474;60298;Promotionszentrum Integrierte Mobilität - München;20252;99999;6;
475;60281;Promotionszentrum Advanced Building Technologies, TH Rosenheim;20242;99999;6; 475;60281;Promotionszentrum Advanced Building Technologies, TH Rosenheim;20242;99999;6;
476;60280;Promotionszentrum NITRO, TH Augsburg;20242;99999;6; 476;60280;Promotionszentrum NITRO, TH Augsburg;20242;99999;6;
477;60297;Promotionszentrum Transformation und nachhaltige Entwicklung, HaW Kempten;20242;99999;6; 477;60297;Promotionszentrum Transformation und nachhaltige Entwicklung, HaW Kempten;20242;99999;6;
@ -293,13 +293,12 @@
491;60294;Promotionszentrum Angewandte Informatik, Regensburg;20232;99999;6; 491;60294;Promotionszentrum Angewandte Informatik, Regensburg;20232;99999;6;
492;60295;Promotionszentrum Materialien und Produktionstechnik, Nürnberg;20232;99999;6; 492;60295;Promotionszentrum Materialien und Produktionstechnik, Nürnberg;20232;99999;6;
493;60296;Promotionszentrum CARRI, München;20232;99999;6; 493;60296;Promotionszentrum CARRI, München;20232;99999;6;
494;60438;GU- Deutsche Hochschule für angewandte Wissenschaften, Potsdam (Priv. FH);20231;99999;6; 494;60438;Deutsche Hochschule für angewandte Wissenschaften (DHAW), Potsdam (Priv. FH);20252;99999;6;
495;61046;INU - Innovative University of Applied Sciences, Köln (Priv. FH);20241;99999;6; 495;61046;INU - Innovative University of Applied Sciences, Köln (Priv. FH);20241;99999;6;
496;60185;media Akademie - Hochschule Stuttgart (Priv. FH);20161;99999;6;
498;60920;Hochschule Wilhelmshaven/Oldenburg/Elsfleth (FH);20102;99999;6; 498;60920;Hochschule Wilhelmshaven/Oldenburg/Elsfleth (FH);20102;99999;6;
499;60907;Hochschule Emden/Leer (FH);20102;99999;6; 499;60907;Hochschule Emden/Leer (FH);20102;99999;6;
501;61505;Hochschule Flensburg (FH);20162;99999;6; 501;61505;Hochschule Flensburg (FH);20162;99999;6;
502;61515;FH Kiel;20042;99999;6; 502;61515;H für Angewandte Wissenschaften Kiel (FH);20252;99999;6;
503;61520;Technische Hochschule Lübeck (FH);20182;99999;6; 503;61520;Technische Hochschule Lübeck (FH);20182;99999;6;
505;61535;FH Wedel (Priv. FH);20171;99999;6; 505;61535;FH Wedel (Priv. FH);20171;99999;6;
506;71505;FH für Verwaltung und Dienstleistung Altenholz (Verw-FH) ;20171;99999;7; 506;71505;FH für Verwaltung und Dienstleistung Altenholz (Verw-FH) ;20171;99999;7;
@ -332,11 +331,11 @@
567;70505;H für öffentliche Verwaltung Bremen (Verw-FH);20171;99999;7; 567;70505;H für öffentliche Verwaltung Bremen (Verw-FH);20171;99999;7;
568;60505;H Bremen (FH);20171;99999;6; 568;60505;H Bremen (FH);20171;99999;6;
569;61054;International School of Management Dortmund in Dortmund und Köln (Priv. FH);20182;99999;6; 569;61054;International School of Management Dortmund in Dortmund und Köln (Priv. FH);20182;99999;6;
570;61021;Westfälische H in Gelsenkirchen/Bocholt/Recklinghausen (FH) ;20211;99999;6; 570;61021;Westfälische H (FH) ;20252;99999;6;
571;61003;FH Aachen;20042;99999;6; 571;61003;FH Aachen;20042;99999;6;
572;61039;IU Intern. Hochschule Erfurt in Bad Honnef,Dortmund,Düsseldorf,Essen,Köln und Münster (Priv. FH);20221;99999;6; 572;61039;IU Intern. Hochschule Erfurt in Bad Honnef,Dortmund,Düsseldorf,Essen,Köln und Münster (Priv. FH);20221;99999;6;
573;61006;Hochschule Bielefeld (FH);20231;99999;6; 573;61006;Hochschule Bielefeld (FH);20231;99999;6;
575;61009;Hochschule Bochum (FH);20162;99999;6; 575;61009;Hochschule für Technik, Wirtschaft und Gesundheit Bochum (FH);20251;99999;6;
577;61015;FH Dortmund;20042;99999;6; 577;61015;FH Dortmund;20042;99999;6;
578;61018;H Düsseldorf (FH);20202;99999;6; 578;61018;H Düsseldorf (FH);20202;99999;6;
580;61063;University of Europe for Applied Sciences Potsdam in Iserlohn (Priv. FH);20202;99999;6; 580;61063;University of Europe for Applied Sciences Potsdam in Iserlohn (Priv. FH);20202;99999;6;
@ -351,7 +350,7 @@
600;61075;Evang. Hochschule Rheinland-Westfalen-Lippe, Bochum (Kirchl. FH);20171;99999;6; 600;61075;Evang. Hochschule Rheinland-Westfalen-Lippe, Bochum (Kirchl. FH);20171;99999;6;
603;61078;Kath. Hochschule Nordrhein-Westfalen (Kirchl. FH);20171;99999;6; 603;61078;Kath. Hochschule Nordrhein-Westfalen (Kirchl. FH);20171;99999;6;
607;71015;Hochschule für Polizei und öffentliche Verwaltung NW (Verw-FH);20192;99999;7; 607;71015;Hochschule für Polizei und öffentliche Verwaltung NW (Verw-FH);20192;99999;7;
618;71005;FH für Rechtspflege NW in Bad Münstereifel (Verw-FH);20171;99999;7; 618;71005;H der Justiz NW in Bad Münstereifel (Verw-FH);20252;99999;7;
619;71010;Hochschule für Finanzen Nordrhein-Westfalen in Nordkirchen (Verw-FH);20201;99999;7; 619;71010;Hochschule für Finanzen Nordrhein-Westfalen in Nordkirchen (Verw-FH);20201;99999;7;
620;71020;Hochschule des Bundes für öffentliche Verwaltung, Brühl und Münster;20171;99999;7; 620;71020;Hochschule des Bundes für öffentliche Verwaltung, Brühl und Münster;20171;99999;7;
621;60705;h_da - H Darmstadt (FH);20062;99999;6; 621;60705;h_da - H Darmstadt (FH);20062;99999;6;
@ -376,7 +375,7 @@
653;61115;Hochschule Koblenz (FH);20131;99999;6; 653;61115;Hochschule Koblenz (FH);20131;99999;6;
658;61130;Hochschule Trier (FH);20131;99999;6; 658;61130;Hochschule Trier (FH);20131;99999;6;
660;61145;Katholische Hochschule Mainz (Kirchl. FH);20171;99999;6; 660;61145;Katholische Hochschule Mainz (Kirchl. FH);20171;99999;6;
662;71110;Hochschule der Deutschen Bundesbank Hachenburg (Priv. Verw-FH);20242;99999;7; 662;71110;Hochschule der Deutschen Bundesbank Hachenburg (Verw-FH);20171;99999;7;
663;71115;Hochschule für öffentliche Verwaltung Rheinland-Pfalz (HöV), Mayen;20151;99999;7; 663;71115;Hochschule für öffentliche Verwaltung Rheinland-Pfalz (HöV), Mayen;20151;99999;7;
664;71105;Hochschule für Finanzen Rheinland-Pfalz (HFin) in Edenkoben (Verw-FH);20172;99999;7; 664;71105;Hochschule für Finanzen Rheinland-Pfalz (HFin) in Edenkoben (Verw-FH);20172;99999;7;
665;61120;Hochschule für Wirtschaft und Gesellschaft Ludwigshafen (FH);20191;99999;6; 665;61120;Hochschule für Wirtschaft und Gesellschaft Ludwigshafen (FH);20191;99999;6;
@ -480,7 +479,7 @@
820;60450;Hochschule für Gesundheitsberufe Eberswalde (HGE) - (Priv. FH) ;20232;99999;6; 820;60450;Hochschule für Gesundheitsberufe Eberswalde (HGE) - (Priv. FH) ;20232;99999;6;
821;60150;Europäische Hochschule für Innovation und Perspektive (EHIP), Backnang (Priv. FH);20241;99999;6; 821;60150;Europäische Hochschule für Innovation und Perspektive (EHIP), Backnang (Priv. FH);20241;99999;6;
822;61328;Duale Hochschule Sachsen (FH);20251;99999;6; 822;61328;Duale Hochschule Sachsen (FH);20251;99999;6;
823;10435;German University of Applied Sciences Potsdam (Priv. U);20251;99999;1; 823;10435;German University of Digital Science (GUDS), Potsdam (Priv. U);20252;99999;1;
900;89805;Sonstige deutsche Hochschulen;20042;99999;8; 900;89805;Sonstige deutsche Hochschulen;20042;99999;8;
950;89850;Berufsakademie in Deutschland;20171;99999;8; 950;89850;Berufsakademie in Deutschland;20171;99999;8;
999;99905;Hochschulen im Ausland;20042;99999;9; 999;99905;Hochschulen im Ausland;20042;99999;9;
@ -498,12 +497,12 @@ A16;60184;VICTORIA - Internationale Hochschule Berlin in Baden Baden (Priv. FH);
A21;60369;Hochschule Fresenius Idstein in Berlin (Priv. FH);20151;99999;6; A21;60369;Hochschule Fresenius Idstein in Berlin (Priv. FH);20151;99999;6;
A22;60835;Europäische FH (EUFH) in Rostock (Priv. FH);20171;99999;6; A22;60835;Europäische FH (EUFH) in Rostock (Priv. FH);20171;99999;6;
A23;60944;FH des Mittelstandes (FHM) in Hannover (Priv. FH);20162;99999;6; A23;60944;FH des Mittelstandes (FHM) in Hannover (Priv. FH);20162;99999;6;
A24;60830;FH des Mittelstandes (FHM) in Rostock und Schwerin (Priv. FH);20162;99999;6; A24;60830;FH des Mittelstandes (FHM) in Rostock (Priv. FH);20252;99999;6;
A25;60825;Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Schwerin (FH);20222;99999;6; A25;60825;Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Schwerin (FH);20222;99999;6;
A26;60166;H Macromedia für angewandte Wissenschaften Stuttgart, Campus Stuttgart und Freiburg (Priv. FH);20182;99999;6; A26;60166;H Macromedia für angewandte Wissenschaften Potsdam, Campus Stuttgart und Freiburg (Priv. FH);20252;99999;6;
A27;61062;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Köln (Priv. FH) ;20182;99999;6; A27;61062;Macromedia University of Applied Sciences Potsdam, Campus Köln (Priv. FH);20252;99999;6;
A28;60678;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Hamburg (Priv. FH) ;20182;99999;6; A28;60678;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Hamburg (Priv. FH) ;20252;99999;6;
A29;60338;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Berlin (Priv. FH);20182;99999;6; A29;60338;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Berlin (Priv. FH);20252;99999;6;
A30;60672;IB Hochschule für Gesundheit und Soziales Berlin in Hamburg (Priv. FH);20192;99999;6; A30;60672;IB Hochschule für Gesundheit und Soziales Berlin in Hamburg (Priv. FH);20192;99999;6;
A31;60249;IB Hochschule für Gesundheit und Soziales Berlin in München (Priv. FH) ;20192;99999;6; A31;60249;IB Hochschule für Gesundheit und Soziales Berlin in München (Priv. FH) ;20192;99999;6;
A32;60188;IB Hochschule für Gesundheit und Soziales Berlin in Stuttgart (Priv. FH) ;20192;99999;6; A32;60188;IB Hochschule für Gesundheit und Soziales Berlin in Stuttgart (Priv. FH) ;20192;99999;6;
@ -512,7 +511,7 @@ A34;60670;BSP Business and Law School - Hochschule für Management und Recht Ber
A36;60248;Mediadesign Hochschule Berlin in München (Priv. FH);20171;99999;6; A36;60248;Mediadesign Hochschule Berlin in München (Priv. FH);20171;99999;6;
A37;60374;IU Internationale Hochschule Erfurt in Berlin (Priv. FH) ;20211;99999;6; A37;60374;IU Internationale Hochschule Erfurt in Berlin (Priv. FH) ;20211;99999;6;
A38;60372;University of Europe for Applied Sciences Potsdam in Berlin (Priv. FH);20202;99999;6; A38;60372;University of Europe for Applied Sciences Potsdam in Berlin (Priv. FH);20202;99999;6;
A39;61338;SRH University of Applied Sciences Heidelberg in Dresden (Priv. FH);20242;99999;6; A39;61338;SRH University of Applied Sciences Heidelberg in Dresden und Leipzig (Priv. FH);20252;99999;6;
A40;60351;H für Ökonomie und Management Essen in Berlin (Priv. FH);20171;99999;6; A40;60351;H für Ökonomie und Management Essen in Berlin (Priv. FH);20171;99999;6;
A41;61336;H für Ökonomie und Management Essen in Leipzig (Priv. FH);20171;99999;6; A41;61336;H für Ökonomie und Management Essen in Leipzig (Priv. FH);20171;99999;6;
A42;60775;H für Ökonomie und Management Essen in Kassel und Frankfurt (Priv. FH);20171;99999;6; A42;60775;H für Ökonomie und Management Essen in Kassel und Frankfurt (Priv. FH);20171;99999;6;
@ -533,7 +532,7 @@ A57;60168;International School of Management Dortmund in Stuttgart (Priv. FH);20
A58;60354;FH des Mittelstandes (FHM) in Berlin (Priv. FH) ;20182;99999;6; A58;60354;FH des Mittelstandes (FHM) in Berlin (Priv. FH) ;20182;99999;6;
A59;60649;International School of Management Dortmund in Hamburg (Priv. FH) ;20182;99999;6; A59;60649;International School of Management Dortmund in Hamburg (Priv. FH) ;20182;99999;6;
A60;60165;IU Internationale Hochschule Erfurt in Freiburg, Mannheim und Stuttgart (Priv. FH) ;20222;99999;6; A60;60165;IU Internationale Hochschule Erfurt in Freiburg, Mannheim und Stuttgart (Priv. FH) ;20222;99999;6;
A61;61331;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Leipzig (Priv. FH);20192;99999;6; A61;61331;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Leipzig (Priv. FH);20252;99999;6;
A62;61650;IU Internationale Hochschule Erfurt in Erfurt (Priv. FH) ;20211;99999;6; A62;61650;IU Internationale Hochschule Erfurt in Erfurt (Priv. FH) ;20211;99999;6;
A63;60680;IU Internationale Hochschule Erfurt in Hamburg (Priv. FH);20211;99999;6; A63;60680;IU Internationale Hochschule Erfurt in Hamburg (Priv. FH);20211;99999;6;
A64;60780;International School of Management Dortmund in Frankfurt (Priv. FH);20192;99999;6; A64;60780;International School of Management Dortmund in Frankfurt (Priv. FH);20192;99999;6;
@ -544,7 +543,7 @@ A68;60667;SRH University of Applied Sciences Heidelberg in Hamburg (Priv. FH) ;2
A69;61220;H für Ökonomie und Management Essen in Saarbrücken (Priv. FH) ;20202;99999;6; A69;61220;H für Ökonomie und Management Essen in Saarbrücken (Priv. FH) ;20202;99999;6;
A70;61333;IU Internationale Hochschule Erfurt in Leipzig und Dresden (Priv. FH);20221;99999;6; A70;61333;IU Internationale Hochschule Erfurt in Leipzig und Dresden (Priv. FH);20221;99999;6;
A71;60269;HSD Hochschule Döpfer Potsdam in Regensburg (Priv. FH);20222;99999;6; A71;60269;HSD Hochschule Döpfer Potsdam in Regensburg (Priv. FH);20222;99999;6;
A72;60776;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Frankfurt a. M. (Priv. FH);20212;99999;6; A72;60776;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Frankfurt a. M. (Priv. FH);20252;99999;6;
A73;60358;Europäische FH (EUFH) in Berlin (Priv. FH);20221;99999;6; A73;60358;Europäische FH (EUFH) in Berlin (Priv. FH);20221;99999;6;
A74;61160;IU Internationale Hochschule Erfurt in Mainz (Priv. FH);20221;99999;6; A74;61160;IU Internationale Hochschule Erfurt in Mainz (Priv. FH);20221;99999;6;
A75;61545;IU Internationale Hochschule Erfurt in Lübeck (Priv. FH);20221;99999;6; A75;61545;IU Internationale Hochschule Erfurt in Lübeck (Priv. FH);20221;99999;6;
@ -553,8 +552,11 @@ A77;10265;Charlotte Fresenius Hochschule Wiesbaden in München (Priv. U);20222;9
A78;10635;Charlotte Fresenius Hochschule Wiesbaden in Hamburg (Priv. U);20222;99999;1; A78;10635;Charlotte Fresenius Hochschule Wiesbaden in Hamburg (Priv. U);20222;99999;1;
A79;60424;HSD Hochschule Döpfer Potsdam in Potsdam (Priv. FH);20222;99999;6; A79;60424;HSD Hochschule Döpfer Potsdam in Potsdam (Priv. FH);20222;99999;6;
A80;61430;Steinbeis Hochschule in Magdeburg (Priv. FH);20222;99999;6; A80;61430;Steinbeis Hochschule in Magdeburg (Priv. FH);20222;99999;6;
A81;11625;HMU Health and Medical University Erfurt in Erfurt (Priv. U);20231;99999;1; A81;11625;HMU Health and Medical University Erfurt in Erfurt (Priv. U);20231;20261;1;
A82;11077;Charlotte Fresenius Hochschule Wiesbaden in Köln (Priv. U);20242;99999;1; A82;11077;Charlotte Fresenius Hochschule Wiesbaden in Köln (Priv. U);20242;99999;1;
A83;61542;SRH University of Applied Sciences Heidelberg in Heide (Priv. FH);20242;99999;6; A83;61542;SRH University of Applied Sciences Heidelberg in Heide (Priv. FH);20242;99999;6;
A84;60530;SRH University of Applied Sciences Heidelberg in Bremen (Priv. FH);20241;99999;6; A84;60530;SRH University of Applied Sciences Heidelberg in Bremen (Priv. FH);20241;99999;6;
A85;11072;HMU Health and Medical University Potsdam in Düsseldof (Priv. U);20252;99999;1;
A86;60840;CBS International Business School, Campus Rostock (Priv. FH);20252;99999;6;
A87;60455;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Potsdam (Priv. FH);20252;99999;6;
991;10921;HIS Test Eigene Hochschule;20042;99999;1; 991;10921;HIS Test Eigene Hochschule;20042;99999;1;

1 001 10725 U Kassel 20042 99999 1
2 002 60515 APOLLON H der Gesundheitswirtschaft Bremen (Priv. FH) 20102 99999 6
3 003 60265 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus München (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus München (Priv. FH) 20182 20252 99999 6
4 004 61074 FH der Diakonie Bielefeld-Bethel (Kirchl. FH) 20171 99999 6
5 006 60129 Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Mannheim (FH) 20222 99999 6
6 008 11034 U Duisburg-Essen 20062 99999 1
144 202 40705 Phil.-Theol. H Frankfurt a.M. (Kirchl.-Theol. H) 20171 99999 4
145 203 41020 Theol. Fakultät Paderborn (Kirchl.-Theol. H) 20171 99999 4
146 204 41105 Theol. Fakultät Trier (Kirchl.-Theol. H) 20171 99999 4
147 205 41110 11140 Vinzenz Pallotti University Vallendar (Kirchl.-Theol. H) Vinzenz Pallotti University gGmbH Vallendar (Kath. U) 20221 20252 99999 4 1
148 206 41025 Kölner H für Katholische Theologie (Kirchl.-Theol. H) 20211 99999 4
149 208 41015 Phil.-Theol. H Münster (Kirchl.-Theol. H) 20171 99999 4
150 210 60267 SRH University of Applied Sciences Heidelberg in Fürth und München (Priv. FH) 20252 99999 6
160 230 10175 H für jüdische Studien Heidelberg (Kirchl. U) 20171 99999 1
161 232 40715 Luth.-Theologische H Oberursel (Kirchl.-Theol. H) 20171 99999 4
162 235 41405 Theol. H Friedensau (Kirchl.-Theol. H) 20171 99999 4
236 60930 FH für Interkulturelle Theologie Hermannsburg (Priv. FH) 20171 99999 6
163 241 60642 Northern Business School Hamburg (Priv. FH) 20141 99999 6
164 242 10420 Medizinische Hochschule Brandenburg in Neuruppin (Priv. U) 20171 99999 1
165 243 51040 Alanus H Alfter (Priv. Kunst-H) 20171 99999 5
225 324 61645 Duale Hochschule Gera-Eisenach (FH) 20162 99999 6
226 326 61540 DHSH - Duale Hochschule Schleswig-Holstein, Kiel (Priv. FH) 20182 99999 6
227 327 10365 German International University Berlin (Priv. U) 20192 99999 1
228 329 10430 HMU Health and Medical University Erfurt in Potsdam (Priv. U) HMU Health and Medical University Potsdam in Potsdam (Priv. U) 20231 20252 99999 1
229 336 60345 Digital Business University Berlin (Priv. FH) 20192 99999 6
230 337 10227 Technische Universität Nürnberg 20211 99999 1
231 343 60608 Berufliche Hochschule Hamburg (FH) 20212 99999 6
253 403 B0705 Akademie für Tonkunst Darmstadt 20172 99999 B
254 404 B0710 Berufsakademie Rhein-Main Rödermark (Private BA) 20172 99999 B
255 405 B0715 Brüder-Grimm-Berufsakademie Hanau (Private BA) 20172 99999 B
256 406 B0720 Dr. Hoch's Konservatorium - Musikakademie Frankfurt am Main Dr. Hoch's Konservatorium - Musikakademie Frankfurt am Main (Priv.) 20172 20252 99999 B
257 407 B0725 Europäische Studienakademie Kälte-Klima-Lüftung (ESaK) Maintal (Private BA) 20172 99999 B
258 408 B0730 Hessische Berufsakademie Frankfurt (Private BA) 20172 99999 B
259 409 B0760 Internationale Berufsakademie der F+U Unternehmensgruppe Darmstadt (iba) (Private BA) 20172 99999 B
273 426 B0718 Deutsche Berufsakademie Sport und Gesundheit (dba) in Baunatal (Private BA) 20172 99999 B
274 427 B0945 Berufsakademie Wilhelmshaven (Private BA) 20192 99999 B
275 428 B1230 Berufsakademie Heimerer GmbH, Quierschied (Private BA) 20202 99999 B
276 474 60298 Promotionszentrum Integrierte Mobilität - München 20252 99999 6
277 475 60281 Promotionszentrum Advanced Building Technologies, TH Rosenheim 20242 99999 6
278 476 60280 Promotionszentrum NITRO, TH Augsburg 20242 99999 6
279 477 60297 Promotionszentrum Transformation und nachhaltige Entwicklung, HaW Kempten 20242 99999 6
293 491 60294 Promotionszentrum Angewandte Informatik, Regensburg 20232 99999 6
294 492 60295 Promotionszentrum Materialien und Produktionstechnik, Nürnberg 20232 99999 6
295 493 60296 Promotionszentrum CARRI, München 20232 99999 6
296 494 60438 GU- Deutsche Hochschule für angewandte Wissenschaften, Potsdam (Priv. FH) Deutsche Hochschule für angewandte Wissenschaften (DHAW), Potsdam (Priv. FH) 20231 20252 99999 6
297 495 61046 INU - Innovative University of Applied Sciences, Köln (Priv. FH) 20241 99999 6
496 60185 media Akademie - Hochschule Stuttgart (Priv. FH) 20161 99999 6
298 498 60920 Hochschule Wilhelmshaven/Oldenburg/Elsfleth (FH) 20102 99999 6
299 499 60907 Hochschule Emden/Leer (FH) 20102 99999 6
300 501 61505 Hochschule Flensburg (FH) 20162 99999 6
301 502 61515 FH Kiel H für Angewandte Wissenschaften Kiel (FH) 20042 20252 99999 6
302 503 61520 Technische Hochschule Lübeck (FH) 20182 99999 6
303 505 61535 FH Wedel (Priv. FH) 20171 99999 6
304 506 71505 FH für Verwaltung und Dienstleistung Altenholz (Verw-FH) 20171 99999 7
331 567 70505 H für öffentliche Verwaltung Bremen (Verw-FH) 20171 99999 7
332 568 60505 H Bremen (FH) 20171 99999 6
333 569 61054 International School of Management Dortmund in Dortmund und Köln (Priv. FH) 20182 99999 6
334 570 61021 Westfälische H in Gelsenkirchen/Bocholt/Recklinghausen (FH) Westfälische H (FH) 20211 20252 99999 6
335 571 61003 FH Aachen 20042 99999 6
336 572 61039 IU Intern. Hochschule Erfurt in Bad Honnef,Dortmund,Düsseldorf,Essen,Köln und Münster (Priv. FH) 20221 99999 6
337 573 61006 Hochschule Bielefeld (FH) 20231 99999 6
338 575 61009 Hochschule Bochum (FH) Hochschule für Technik, Wirtschaft und Gesundheit Bochum (FH) 20162 20251 99999 6
339 577 61015 FH Dortmund 20042 99999 6
340 578 61018 H Düsseldorf (FH) 20202 99999 6
341 580 61063 University of Europe for Applied Sciences Potsdam in Iserlohn (Priv. FH) 20202 99999 6
350 600 61075 Evang. Hochschule Rheinland-Westfalen-Lippe, Bochum (Kirchl. FH) 20171 99999 6
351 603 61078 Kath. Hochschule Nordrhein-Westfalen (Kirchl. FH) 20171 99999 6
352 607 71015 Hochschule für Polizei und öffentliche Verwaltung NW (Verw-FH) 20192 99999 7
353 618 71005 FH für Rechtspflege NW in Bad Münstereifel (Verw-FH) H der Justiz NW in Bad Münstereifel (Verw-FH) 20171 20252 99999 7
354 619 71010 Hochschule für Finanzen Nordrhein-Westfalen in Nordkirchen (Verw-FH) 20201 99999 7
355 620 71020 Hochschule des Bundes für öffentliche Verwaltung, Brühl und Münster 20171 99999 7
356 621 60705 h_da - H Darmstadt (FH) 20062 99999 6
375 653 61115 Hochschule Koblenz (FH) 20131 99999 6
376 658 61130 Hochschule Trier (FH) 20131 99999 6
377 660 61145 Katholische Hochschule Mainz (Kirchl. FH) 20171 99999 6
378 662 71110 Hochschule der Deutschen Bundesbank Hachenburg (Priv. Verw-FH) Hochschule der Deutschen Bundesbank Hachenburg (Verw-FH) 20242 20171 99999 7
379 663 71115 Hochschule für öffentliche Verwaltung Rheinland-Pfalz (HöV), Mayen 20151 99999 7
380 664 71105 Hochschule für Finanzen Rheinland-Pfalz (HFin) in Edenkoben (Verw-FH) 20172 99999 7
381 665 61120 Hochschule für Wirtschaft und Gesellschaft Ludwigshafen (FH) 20191 99999 6
479 820 60450 Hochschule für Gesundheitsberufe Eberswalde (HGE) - (Priv. FH) 20232 99999 6
480 821 60150 Europäische Hochschule für Innovation und Perspektive (EHIP), Backnang (Priv. FH) 20241 99999 6
481 822 61328 Duale Hochschule Sachsen (FH) 20251 99999 6
482 823 10435 German University of Applied Sciences Potsdam (Priv. U) German University of Digital Science (GUDS), Potsdam (Priv. U) 20251 20252 99999 1
483 900 89805 Sonstige deutsche Hochschulen 20042 99999 8
484 950 89850 Berufsakademie in Deutschland 20171 99999 8
485 999 99905 Hochschulen im Ausland 20042 99999 9
497 A21 60369 Hochschule Fresenius Idstein in Berlin (Priv. FH) 20151 99999 6
498 A22 60835 Europäische FH (EUFH) in Rostock (Priv. FH) 20171 99999 6
499 A23 60944 FH des Mittelstandes (FHM) in Hannover (Priv. FH) 20162 99999 6
500 A24 60830 FH des Mittelstandes (FHM) in Rostock und Schwerin (Priv. FH) FH des Mittelstandes (FHM) in Rostock (Priv. FH) 20162 20252 99999 6
501 A25 60825 Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Schwerin (FH) 20222 99999 6
502 A26 60166 H Macromedia für angewandte Wissenschaften Stuttgart, Campus Stuttgart und Freiburg (Priv. FH) H Macromedia für angewandte Wissenschaften Potsdam, Campus Stuttgart und Freiburg (Priv. FH) 20182 20252 99999 6
503 A27 61062 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Köln (Priv. FH) Macromedia University of Applied Sciences Potsdam, Campus Köln (Priv. FH) 20182 20252 99999 6
504 A28 60678 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Hamburg (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Hamburg (Priv. FH) 20182 20252 99999 6
505 A29 60338 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Berlin (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Berlin (Priv. FH) 20182 20252 99999 6
506 A30 60672 IB Hochschule für Gesundheit und Soziales Berlin in Hamburg (Priv. FH) 20192 99999 6
507 A31 60249 IB Hochschule für Gesundheit und Soziales Berlin in München (Priv. FH) 20192 99999 6
508 A32 60188 IB Hochschule für Gesundheit und Soziales Berlin in Stuttgart (Priv. FH) 20192 99999 6
511 A36 60248 Mediadesign Hochschule Berlin in München (Priv. FH) 20171 99999 6
512 A37 60374 IU Internationale Hochschule Erfurt in Berlin (Priv. FH) 20211 99999 6
513 A38 60372 University of Europe for Applied Sciences Potsdam in Berlin (Priv. FH) 20202 99999 6
514 A39 61338 SRH University of Applied Sciences Heidelberg in Dresden (Priv. FH) SRH University of Applied Sciences Heidelberg in Dresden und Leipzig (Priv. FH) 20242 20252 99999 6
515 A40 60351 H für Ökonomie und Management Essen in Berlin (Priv. FH) 20171 99999 6
516 A41 61336 H für Ökonomie und Management Essen in Leipzig (Priv. FH) 20171 99999 6
517 A42 60775 H für Ökonomie und Management Essen in Kassel und Frankfurt (Priv. FH) 20171 99999 6
532 A58 60354 FH des Mittelstandes (FHM) in Berlin (Priv. FH) 20182 99999 6
533 A59 60649 International School of Management Dortmund in Hamburg (Priv. FH) 20182 99999 6
534 A60 60165 IU Internationale Hochschule Erfurt in Freiburg, Mannheim und Stuttgart (Priv. FH) 20222 99999 6
535 A61 61331 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Leipzig (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Leipzig (Priv. FH) 20192 20252 99999 6
536 A62 61650 IU Internationale Hochschule Erfurt in Erfurt (Priv. FH) 20211 99999 6
537 A63 60680 IU Internationale Hochschule Erfurt in Hamburg (Priv. FH) 20211 99999 6
538 A64 60780 International School of Management Dortmund in Frankfurt (Priv. FH) 20192 99999 6
543 A69 61220 H für Ökonomie und Management Essen in Saarbrücken (Priv. FH) 20202 99999 6
544 A70 61333 IU Internationale Hochschule Erfurt in Leipzig und Dresden (Priv. FH) 20221 99999 6
545 A71 60269 HSD Hochschule Döpfer Potsdam in Regensburg (Priv. FH) 20222 99999 6
546 A72 60776 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Frankfurt a. M. (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Frankfurt a. M. (Priv. FH) 20212 20252 99999 6
547 A73 60358 Europäische FH (EUFH) in Berlin (Priv. FH) 20221 99999 6
548 A74 61160 IU Internationale Hochschule Erfurt in Mainz (Priv. FH) 20221 99999 6
549 A75 61545 IU Internationale Hochschule Erfurt in Lübeck (Priv. FH) 20221 99999 6
552 A78 10635 Charlotte Fresenius Hochschule Wiesbaden in Hamburg (Priv. U) 20222 99999 1
553 A79 60424 HSD Hochschule Döpfer Potsdam in Potsdam (Priv. FH) 20222 99999 6
554 A80 61430 Steinbeis Hochschule in Magdeburg (Priv. FH) 20222 99999 6
555 A81 11625 HMU Health and Medical University Erfurt in Erfurt (Priv. U) 20231 99999 20261 1
556 A82 11077 Charlotte Fresenius Hochschule Wiesbaden in Köln (Priv. U) 20242 99999 1
557 A83 61542 SRH University of Applied Sciences Heidelberg in Heide (Priv. FH) 20242 99999 6
558 A84 60530 SRH University of Applied Sciences Heidelberg in Bremen (Priv. FH) 20241 99999 6
559 A85 11072 HMU Health and Medical University Potsdam in Düsseldof (Priv. U) 20252 99999 1
560 A86 60840 CBS International Business School, Campus Rostock (Priv. FH) 20252 99999 6
561 A87 60455 Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Potsdam (Priv. FH) 20252 99999 6
562 991 10921 HIS Test Eigene Hochschule 20042 99999 1

44
src/de/statspez/plausi/astat/csv/HochschuleErsteinschreibung.csv

@ -3,14 +3,15 @@
0013;;U Kassel in Kassel (Kunsthochschule);20171;99999; 0013;;U Kassel in Kassel (Kunsthochschule);20171;99999;
0014;;U Kassel in Kassel (Intern. Management School);20171;99999; 0014;;U Kassel in Kassel (Intern. Management School);20171;99999;
0020;;APOLLON H der Gesundheitswirtschaft Bremen (Priv. FH);20171;99999; 0020;;APOLLON H der Gesundheitswirtschaft Bremen (Priv. FH);20171;99999;
0030;;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus München (Priv. FH);20182;99999; 0030;;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus München (Priv. FH);20252;99999;
0032;;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Berlin (Priv. FH);20182;99999; 0032;;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Berlin (Priv. FH);20252;99999;
0033;;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Hamburg (Priv. FH);20182;99999; 0033;;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Hamburg (Priv. FH);20252;99999;
0034;;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Köln (Priv. FH);20182;99999; 0034;;Macromedia University of Applied Sciences Potsdam, Campus Köln (Priv. FH);20252;99999;
0035;;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Stuttgart (Priv. FH);20182;99999; 0035;;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Stuttgart (Priv. FH);20252;99999;
0036;;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Freiburg i. Br. (Priv. FH);20182;99999; 0036;;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Freiburg i. Br. (Priv. FH);20252;99999;
0037;;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Leipzig (Priv. FH) ;20192;99999; 0037;;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Leipzig (Priv. FH) ;20252;99999;
0038;;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Frankfurt a. M. (Priv. FH);20212;99999; 0038;;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Frankfurt a. M. (Priv. FH);20252;99999;
0039;;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Potsdam (Priv. FH);20252;99999;
0040;;FH der Diakonie Bielefeld-Bethel (Kirchl. FH);20171;99999; 0040;;FH der Diakonie Bielefeld-Bethel (Kirchl. FH);20171;99999;
0050;;German Graduate School of Management & Law Heilbronn (Priv. FH);20171;99999; 0050;;German Graduate School of Management & Law Heilbronn (Priv. FH);20171;99999;
0060;;Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Mannheim (FH);20222;99999; 0060;;Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Mannheim (FH);20222;99999;
@ -163,6 +164,7 @@
1681;;CBS International Business School, Campus Mainz (Priv. FH);20201;99999; 1681;;CBS International Business School, Campus Mainz (Priv. FH);20201;99999;
1682;;CBS International Business School, Campus Brühl (Priv. FH);20222;99999; 1682;;CBS International Business School, Campus Brühl (Priv. FH);20222;99999;
1683;;CBS International Business School, Campus Neuss (Priv. FH);20222;99999; 1683;;CBS International Business School, Campus Neuss (Priv. FH);20222;99999;
1684;;CBS International Business School, Campus Rostock (Priv. FH);20252;99999;
1690;;TU Berlin;20171;99999; 1690;;TU Berlin;20171;99999;
1700;;ESCP Europe Wirtschaftshochschule Berlin (Priv. U);20171;99999; 1700;;ESCP Europe Wirtschaftshochschule Berlin (Priv. U);20171;99999;
1710;;H für Politik München (U);20171;99999; 1710;;H für Politik München (U);20171;99999;
@ -199,7 +201,7 @@
2020;;Phil.-Theol. H Frankfurt a.M. (Kirchl.-Theol. H);20171;99999; 2020;;Phil.-Theol. H Frankfurt a.M. (Kirchl.-Theol. H);20171;99999;
2030;;Theol. Fakultät Paderborn (Kirchl.-Theol. H);20171;99999; 2030;;Theol. Fakultät Paderborn (Kirchl.-Theol. H);20171;99999;
2040;;Theol. Fakultät Trier (Kirchl.-Theol. H);20171;99999; 2040;;Theol. Fakultät Trier (Kirchl.-Theol. H);20171;99999;
2050;;Vinzenz Pallotti University Vallendar (Kirchl.-Theol. H);20221;99999; 2050;;Vinzenz Pallotti University gGmbH Vallendar (Kath. U);20252;99999;
2060;;Kölner H für Katholische Theologie (Kirchl.-Theol. H);20211;99999; 2060;;Kölner H für Katholische Theologie (Kirchl.-Theol. H);20211;99999;
2080;;Phil.-Theol. H Münster (Kirchl.-Theol. H);20171;99999; 2080;;Phil.-Theol. H Münster (Kirchl.-Theol. H);20171;99999;
2100;;SRH University of Applied Sciences Heidelberg in Fürth (Priv. FH);20242;99999; 2100;;SRH University of Applied Sciences Heidelberg in Fürth (Priv. FH);20242;99999;
@ -307,8 +309,9 @@
3250;;Fachhochschule Clara Hoffbauer Potsdam (Priv. FH);20171;99999; 3250;;Fachhochschule Clara Hoffbauer Potsdam (Priv. FH);20171;99999;
3260;;DHSH - Duale Hochschule Schleswig-Holstein, Kiel (Priv. FH);20182;99999; 3260;;DHSH - Duale Hochschule Schleswig-Holstein, Kiel (Priv. FH);20182;99999;
3270;;German International University Berlin (Priv. U);20192;99999; 3270;;German International University Berlin (Priv. U);20192;99999;
3290;;HMU Health and Medical University Erfurt in Potsdam (Priv. U);20231;99999; 3290;;HMU Health and Medical University Potsdam in Potsdam (Priv. U);20252;99999;
3291;;HMU Health and Medical University Erfurt in Erfurt (Priv. U);20231;99999; 3291;;HMU Health and Medical University Erfurt in Erfurt (Priv. U);20231;99999;
3292;;HMU Health and Medical University Potsdam in Düsseldof (Priv. U);20252;99999;
3360;;Digital Business University Berlin (Priv. FH);20192;99999; 3360;;Digital Business University Berlin (Priv. FH);20192;99999;
3370;;Technische Universität Nürnberg;20211;99999; 3370;;Technische Universität Nürnberg;20211;99999;
3430;;Berufliche Hochschule Hamburg (FH);20212;99999; 3430;;Berufliche Hochschule Hamburg (FH);20212;99999;
@ -330,7 +333,7 @@
3950;;Promotionskolleg NRW, Bochum (FH);20222;99999; 3950;;Promotionskolleg NRW, Bochum (FH);20222;99999;
3971;;Brandenburgische TU Cottbus-Senftenberg in Cottbus;20171;99999; 3971;;Brandenburgische TU Cottbus-Senftenberg in Cottbus;20171;99999;
3972;;Brandenburgische TU Cottbus-Senftenberg in Senftenberg;20171;99999; 3972;;Brandenburgische TU Cottbus-Senftenberg in Senftenberg;20171;99999;
4940;;GU- Deutsche Hochschule für angewandte Wissenschaften, Potsdam (Priv. FH);20231;99999; 4940;;Deutsche Hochschule für angewandte Wissenschaften (DHAW), Potsdam (Priv. FH);20252;99999;
4950;;INU - Innovative University of Applied Sciences, Köln (Priv. FH);20241;99999; 4950;;INU - Innovative University of Applied Sciences, Köln (Priv. FH);20241;99999;
4960;;media Akademie - Hochschule Stuttgart (Priv. FH);20171;99999; 4960;;media Akademie - Hochschule Stuttgart (Priv. FH);20171;99999;
4981;;Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Wilhelmshaven (FH);20171;99999; 4981;;Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Wilhelmshaven (FH);20171;99999;
@ -339,7 +342,7 @@
4991;;Hochschule Emden/Leer in Emden (FH);20171;99999; 4991;;Hochschule Emden/Leer in Emden (FH);20171;99999;
4992;;Hochschule Emden/Leer in Leer (FH);20171;99999; 4992;;Hochschule Emden/Leer in Leer (FH);20171;99999;
5010;;Hochschule Flensburg (FH);20171;99999; 5010;;Hochschule Flensburg (FH);20171;99999;
5020;;FH Kiel;20171;99999; 5020;;H für Angewandte Wissenschaften Kiel (FH);20252;99999;
5030;;Technische Hochschule Lübeck (FH);20182;99999; 5030;;Technische Hochschule Lübeck (FH);20182;99999;
5050;;FH Wedel (Priv. FH);20171;99999; 5050;;FH Wedel (Priv. FH);20171;99999;
5061;;FH für Verwaltung und Dienstleistung Altenholz in Altenholz (Verw-FH);20171;99999; 5061;;FH für Verwaltung und Dienstleistung Altenholz in Altenholz (Verw-FH);20171;99999;
@ -402,9 +405,9 @@
5694;;International School of Management Dortmund in Hamburg (Priv. FH);20182;99999; 5694;;International School of Management Dortmund in Hamburg (Priv. FH);20182;99999;
5695;;International School of Management Dortmund in Frankfurt (Priv. FH);20192;99999; 5695;;International School of Management Dortmund in Frankfurt (Priv. FH);20192;99999;
5696;;International School of Management Dortmund in Berlin (Priv. FH);20202;99999; 5696;;International School of Management Dortmund in Berlin (Priv. FH);20202;99999;
5701;;Westfälische H in Gelsenkirchen/Bocholt/Recklinghausen (FH) in Gelsenkirchen;20211;99999; 5701;;Westfälische H (FH) in Gelsenkirchen;20252;99999;
5702;;Westfälische H in Gelsenkirchen/Bocholt/Recklinghausen (FH) in Bocholt;20211;99999; 5702;;Westfälische H (FH) in Bocholt;20252;99999;
5703;;Westfälische H in Gelsenkirchen/Bocholt/Recklinghausen (FH) in Recklinghausen;20211;99999; 5703;;Westfälische H (FH) in Recklinghausen;20252;99999;
5711;;FH Aachen in Aachen;20171;99999; 5711;;FH Aachen in Aachen;20171;99999;
5712;;FH Aachen in Jülich;20171;99999; 5712;;FH Aachen in Jülich;20171;99999;
5720;;IU Internationale Hochschule Erfurt in Bad Honnef (Priv. FH);20211;99999; 5720;;IU Internationale Hochschule Erfurt in Bad Honnef (Priv. FH);20211;99999;
@ -432,8 +435,8 @@
5731;;Hochschule Bielefeld in Bielefeld (FH);20231;99999; 5731;;Hochschule Bielefeld in Bielefeld (FH);20231;99999;
5732;;Hochschule Bielefeld in Minden (FH);20231;99999; 5732;;Hochschule Bielefeld in Minden (FH);20231;99999;
5733;;Hochschule Bielefeld in Gütersloh (FH);20231;99999; 5733;;Hochschule Bielefeld in Gütersloh (FH);20231;99999;
5751;;Hochschule Bochum (FH) in Bochum;20171;99999; 5751;;Hochschule für Technik, Wirtschaft und Gesundheit Bochum (FH) in Bochum;20251;99999;
5752;;Hochschule Bochum (FH) in Velbert/Heiligenhaus;20171;99999; 5752;;Hochschule für Technik, Wirtschaft und Gesundheit Bochum (FH) in Velbert/Heiligenhaus;20251;99999;
5770;;FH Dortmund;20171;99999; 5770;;FH Dortmund;20171;99999;
5780;;H Düsseldorf (FH);20202;99999; 5780;;H Düsseldorf (FH);20202;99999;
5800;;University of Europe for Applied Sciences Potsdam in Iserlohn (Priv. FH);20202;99999; 5800;;University of Europe for Applied Sciences Potsdam in Iserlohn (Priv. FH);20202;99999;
@ -480,7 +483,7 @@
607B;;Hochschule für Polizei und öffentliche Verwaltung NW in Mülheim (Verw-FH);20192;99999; 607B;;Hochschule für Polizei und öffentliche Verwaltung NW in Mülheim (Verw-FH);20192;99999;
607C;;Hochschule für Polizei und öffentliche Verwaltung NW in Aachen (Verw-FH);20192;99999; 607C;;Hochschule für Polizei und öffentliche Verwaltung NW in Aachen (Verw-FH);20192;99999;
607D;;Hochschule für Polizei und öffentliche Verwaltung NW in Herne (Verw-FH);20192;99999; 607D;;Hochschule für Polizei und öffentliche Verwaltung NW in Herne (Verw-FH);20192;99999;
6180;;FH für Rechtspflege NW in Bad Münstereifel (Verw-FH);20171;99999; 6180;;H der Justiz NW in Bad Münstereifel (Verw-FH);20252;99999;
6190;;Hochschule für Finanzen Nordrhein-Westfalen in Nordkirchen (Verw-FH);20201;99999; 6190;;Hochschule für Finanzen Nordrhein-Westfalen in Nordkirchen (Verw-FH);20201;99999;
6202;;Hochschule des Bundes für öffentliche Verwaltung, FB Sozialversicherung in Berlin ;20171;99999; 6202;;Hochschule des Bundes für öffentliche Verwaltung, FB Sozialversicherung in Berlin ;20171;99999;
6203;;Hochschule des Bundes für öffentliche Verwaltung, FB Wetterdienst in Langen;20171;99999; 6203;;Hochschule des Bundes für öffentliche Verwaltung, FB Wetterdienst in Langen;20171;99999;
@ -543,7 +546,7 @@
6582;;Hochschule Trier (FH) in Birkenfeld;20171;99999; 6582;;Hochschule Trier (FH) in Birkenfeld;20171;99999;
6583;;Hochschule Trier (FH) in Idar-Oberstein;20171;99999; 6583;;Hochschule Trier (FH) in Idar-Oberstein;20171;99999;
6600;;Katholische Hochschule Mainz (Kirchl. FH);20171;99999; 6600;;Katholische Hochschule Mainz (Kirchl. FH);20171;99999;
6620;;Hochschule der Deutschen Bundesbank Hachenburg (Priv. Verw-FH);20242;99999; 6620;;Hochschule der Deutschen Bundesbank Hachenburg (Verw-FH);20171;99999;
6631;;Hochschule für öffentliche Verwaltung Rheinland-Pfalz (HöV) Mayen, FB Innere Verwaltung in Mayen;20171;99999; 6631;;Hochschule für öffentliche Verwaltung Rheinland-Pfalz (HöV) Mayen, FB Innere Verwaltung in Mayen;20171;99999;
6640;;Hochschule für Finanzen Rheinland-Pfalz (HFin) in Edenkoben (Verw-FH);20172;99999; 6640;;Hochschule für Finanzen Rheinland-Pfalz (HFin) in Edenkoben (Verw-FH);20172;99999;
6650;;Hochschule für Wirtschaft und Gesellschaft Ludwigshafen (FH);20191;99999; 6650;;Hochschule für Wirtschaft und Gesellschaft Ludwigshafen (FH);20191;99999;
@ -675,6 +678,7 @@
7973;;SRH University of Applied Sciences Heidelberg in Hamburg (Priv. FH);20242;99999; 7973;;SRH University of Applied Sciences Heidelberg in Hamburg (Priv. FH);20242;99999;
7974;;SRH University of Applied Sciences Heidelberg in Heide (Priv. FH);20242;99999; 7974;;SRH University of Applied Sciences Heidelberg in Heide (Priv. FH);20242;99999;
7975;;SRH University of Applied Sciences Heidelberg in Bremen (Priv. FH);20241;99999; 7975;;SRH University of Applied Sciences Heidelberg in Bremen (Priv. FH);20241;99999;
7976;;SRH University of Applied Sciences Heidelberg in Leipzig (Priv. FH);20252;99999;
7990;;Norddeutsche Akademie für Finanzen und Steuerrecht Hamburg (Verw-FH);20171;99999; 7990;;Norddeutsche Akademie für Finanzen und Steuerrecht Hamburg (Verw-FH);20171;99999;
8000;;Hochschule Merseburg (FH);20171;99999; 8000;;Hochschule Merseburg (FH);20171;99999;
8011;;H Magdeburg-Stendal in Magdeburg (FH);20171;99999; 8011;;H Magdeburg-Stendal in Magdeburg (FH);20171;99999;
@ -758,7 +762,7 @@
8225;;Duale Hochschule Sachsen - Leipzig (FH);20251;99999; 8225;;Duale Hochschule Sachsen - Leipzig (FH);20251;99999;
8226;;Duale Hochschule Sachsen - Plauen (FH);20251;99999; 8226;;Duale Hochschule Sachsen - Plauen (FH);20251;99999;
8227;;Duale Hochschule Sachsen - Riesa (FH);20251;99999; 8227;;Duale Hochschule Sachsen - Riesa (FH);20251;99999;
8230;;German University of Applied Sciences Potsdam (Priv. U);20251;99999; 8230;;German University of Digital Science (GUDS), Potsdam (Priv. U);20252;99999;
9000;;Sonstige deutsche Hochschulen;20171;99999; 9000;;Sonstige deutsche Hochschulen;20171;99999;
9990;;Hochschulen im Ausland;20171;99999; 9990;;Hochschulen im Ausland;20171;99999;
9994;;HIS Test Eigene Hochschule;20171;99999; 9994;;HIS Test Eigene Hochschule;20171;99999;

1 0011 U Kassel in Kassel (ohne Kunsthochschule) 20171 99999
3 0013 U Kassel in Kassel (Kunsthochschule) 20171 99999
4 0014 U Kassel in Kassel (Intern. Management School) 20171 99999
5 0020 APOLLON H der Gesundheitswirtschaft Bremen (Priv. FH) 20171 99999
6 0030 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus München (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus München (Priv. FH) 20182 20252 99999
7 0032 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Berlin (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Berlin (Priv. FH) 20182 20252 99999
8 0033 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Hamburg (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Hamburg (Priv. FH) 20182 20252 99999
9 0034 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Köln (Priv. FH) Macromedia University of Applied Sciences Potsdam, Campus Köln (Priv. FH) 20182 20252 99999
10 0035 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Stuttgart (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Stuttgart (Priv. FH) 20182 20252 99999
11 0036 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Freiburg i. Br. (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Freiburg i. Br. (Priv. FH) 20182 20252 99999
12 0037 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Leipzig (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Leipzig (Priv. FH) 20192 20252 99999
13 0038 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Frankfurt a. M. (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Frankfurt a. M. (Priv. FH) 20212 20252 99999
14 0039 Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Potsdam (Priv. FH) 20252 99999
15 0040 FH der Diakonie Bielefeld-Bethel (Kirchl. FH) 20171 99999
16 0050 German Graduate School of Management & Law Heilbronn (Priv. FH) 20171 99999
17 0060 Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Mannheim (FH) 20222 99999
164 1681 CBS International Business School, Campus Mainz (Priv. FH) 20201 99999
165 1682 CBS International Business School, Campus Brühl (Priv. FH) 20222 99999
166 1683 CBS International Business School, Campus Neuss (Priv. FH) 20222 99999
167 1684 CBS International Business School, Campus Rostock (Priv. FH) 20252 99999
168 1690 TU Berlin 20171 99999
169 1700 ESCP Europe Wirtschaftshochschule Berlin (Priv. U) 20171 99999
170 1710 H für Politik München (U) 20171 99999
201 2020 Phil.-Theol. H Frankfurt a.M. (Kirchl.-Theol. H) 20171 99999
202 2030 Theol. Fakultät Paderborn (Kirchl.-Theol. H) 20171 99999
203 2040 Theol. Fakultät Trier (Kirchl.-Theol. H) 20171 99999
204 2050 Vinzenz Pallotti University Vallendar (Kirchl.-Theol. H) Vinzenz Pallotti University gGmbH Vallendar (Kath. U) 20221 20252 99999
205 2060 Kölner H für Katholische Theologie (Kirchl.-Theol. H) 20211 99999
206 2080 Phil.-Theol. H Münster (Kirchl.-Theol. H) 20171 99999
207 2100 SRH University of Applied Sciences Heidelberg in Fürth (Priv. FH) 20242 99999
309 3250 Fachhochschule Clara Hoffbauer Potsdam (Priv. FH) 20171 99999
310 3260 DHSH - Duale Hochschule Schleswig-Holstein, Kiel (Priv. FH) 20182 99999
311 3270 German International University Berlin (Priv. U) 20192 99999
312 3290 HMU Health and Medical University Erfurt in Potsdam (Priv. U) HMU Health and Medical University Potsdam in Potsdam (Priv. U) 20231 20252 99999
313 3291 HMU Health and Medical University Erfurt in Erfurt (Priv. U) 20231 99999
314 3292 HMU Health and Medical University Potsdam in Düsseldof (Priv. U) 20252 99999
315 3360 Digital Business University Berlin (Priv. FH) 20192 99999
316 3370 Technische Universität Nürnberg 20211 99999
317 3430 Berufliche Hochschule Hamburg (FH) 20212 99999
333 3950 Promotionskolleg NRW, Bochum (FH) 20222 99999
334 3971 Brandenburgische TU Cottbus-Senftenberg in Cottbus 20171 99999
335 3972 Brandenburgische TU Cottbus-Senftenberg in Senftenberg 20171 99999
336 4940 GU- Deutsche Hochschule für angewandte Wissenschaften, Potsdam (Priv. FH) Deutsche Hochschule für angewandte Wissenschaften (DHAW), Potsdam (Priv. FH) 20231 20252 99999
337 4950 INU - Innovative University of Applied Sciences, Köln (Priv. FH) 20241 99999
338 4960 media Akademie - Hochschule Stuttgart (Priv. FH) 20171 99999
339 4981 Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Wilhelmshaven (FH) 20171 99999
342 4991 Hochschule Emden/Leer in Emden (FH) 20171 99999
343 4992 Hochschule Emden/Leer in Leer (FH) 20171 99999
344 5010 Hochschule Flensburg (FH) 20171 99999
345 5020 FH Kiel H für Angewandte Wissenschaften Kiel (FH) 20171 20252 99999
346 5030 Technische Hochschule Lübeck (FH) 20182 99999
347 5050 FH Wedel (Priv. FH) 20171 99999
348 5061 FH für Verwaltung und Dienstleistung Altenholz in Altenholz (Verw-FH) 20171 99999
405 5694 International School of Management Dortmund in Hamburg (Priv. FH) 20182 99999
406 5695 International School of Management Dortmund in Frankfurt (Priv. FH) 20192 99999
407 5696 International School of Management Dortmund in Berlin (Priv. FH) 20202 99999
408 5701 Westfälische H in Gelsenkirchen/Bocholt/Recklinghausen (FH) in Gelsenkirchen Westfälische H (FH) in Gelsenkirchen 20211 20252 99999
409 5702 Westfälische H in Gelsenkirchen/Bocholt/Recklinghausen (FH) in Bocholt Westfälische H (FH) in Bocholt 20211 20252 99999
410 5703 Westfälische H in Gelsenkirchen/Bocholt/Recklinghausen (FH) in Recklinghausen Westfälische H (FH) in Recklinghausen 20211 20252 99999
411 5711 FH Aachen in Aachen 20171 99999
412 5712 FH Aachen in Jülich 20171 99999
413 5720 IU Internationale Hochschule Erfurt in Bad Honnef (Priv. FH) 20211 99999
435 5731 Hochschule Bielefeld in Bielefeld (FH) 20231 99999
436 5732 Hochschule Bielefeld in Minden (FH) 20231 99999
437 5733 Hochschule Bielefeld in Gütersloh (FH) 20231 99999
438 5751 Hochschule Bochum (FH) in Bochum Hochschule für Technik, Wirtschaft und Gesundheit Bochum (FH) in Bochum 20171 20251 99999
439 5752 Hochschule Bochum (FH) in Velbert/Heiligenhaus Hochschule für Technik, Wirtschaft und Gesundheit Bochum (FH) in Velbert/Heiligenhaus 20171 20251 99999
440 5770 FH Dortmund 20171 99999
441 5780 H Düsseldorf (FH) 20202 99999
442 5800 University of Europe for Applied Sciences Potsdam in Iserlohn (Priv. FH) 20202 99999
483 607B Hochschule für Polizei und öffentliche Verwaltung NW in Mülheim (Verw-FH) 20192 99999
484 607C Hochschule für Polizei und öffentliche Verwaltung NW in Aachen (Verw-FH) 20192 99999
485 607D Hochschule für Polizei und öffentliche Verwaltung NW in Herne (Verw-FH) 20192 99999
486 6180 FH für Rechtspflege NW in Bad Münstereifel (Verw-FH) H der Justiz NW in Bad Münstereifel (Verw-FH) 20171 20252 99999
487 6190 Hochschule für Finanzen Nordrhein-Westfalen in Nordkirchen (Verw-FH) 20201 99999
488 6202 Hochschule des Bundes für öffentliche Verwaltung, FB Sozialversicherung in Berlin 20171 99999
489 6203 Hochschule des Bundes für öffentliche Verwaltung, FB Wetterdienst in Langen 20171 99999
546 6582 Hochschule Trier (FH) in Birkenfeld 20171 99999
547 6583 Hochschule Trier (FH) in Idar-Oberstein 20171 99999
548 6600 Katholische Hochschule Mainz (Kirchl. FH) 20171 99999
549 6620 Hochschule der Deutschen Bundesbank Hachenburg (Priv. Verw-FH) Hochschule der Deutschen Bundesbank Hachenburg (Verw-FH) 20242 20171 99999
550 6631 Hochschule für öffentliche Verwaltung Rheinland-Pfalz (HöV) Mayen, FB Innere Verwaltung in Mayen 20171 99999
551 6640 Hochschule für Finanzen Rheinland-Pfalz (HFin) in Edenkoben (Verw-FH) 20172 99999
552 6650 Hochschule für Wirtschaft und Gesellschaft Ludwigshafen (FH) 20191 99999
678 7973 SRH University of Applied Sciences Heidelberg in Hamburg (Priv. FH) 20242 99999
679 7974 SRH University of Applied Sciences Heidelberg in Heide (Priv. FH) 20242 99999
680 7975 SRH University of Applied Sciences Heidelberg in Bremen (Priv. FH) 20241 99999
681 7976 SRH University of Applied Sciences Heidelberg in Leipzig (Priv. FH) 20252 99999
682 7990 Norddeutsche Akademie für Finanzen und Steuerrecht Hamburg (Verw-FH) 20171 99999
683 8000 Hochschule Merseburg (FH) 20171 99999
684 8011 H Magdeburg-Stendal in Magdeburg (FH) 20171 99999
762 8225 Duale Hochschule Sachsen - Leipzig (FH) 20251 99999
763 8226 Duale Hochschule Sachsen - Plauen (FH) 20251 99999
764 8227 Duale Hochschule Sachsen - Riesa (FH) 20251 99999
765 8230 German University of Applied Sciences Potsdam (Priv. U) German University of Digital Science (GUDS), Potsdam (Priv. U) 20251 20252 99999
766 9000 Sonstige deutsche Hochschulen 20171 99999
767 9990 Hochschulen im Ausland 20171 99999
768 9994 HIS Test Eigene Hochschule 20171 99999

61
src/de/statspez/plausi/astat/csv/Hochschulfachbereich.csv

@ -3,14 +3,15 @@
0013;10725102;U Kassel in Kassel (Kunsthochschule);20042;99999;001Y;2;1;CRS3035RES100mN3132800E4285400;1; 0013;10725102;U Kassel in Kassel (Kunsthochschule);20042;99999;001Y;2;1;CRS3035RES100mN3132800E4285400;1;
0014;10725103;U Kassel in Kassel (Intern. Management School);20171;99999;001Y;2;1;CRS3035RES100mN3135000E4286500;0; 0014;10725103;U Kassel in Kassel (Intern. Management School);20171;99999;001Y;2;1;CRS3035RES100mN3135000E4286500;0;
0020;60515000;APOLLON H der Gesundheitswirtschaft Bremen (Priv. FH);20102;99999;002Z;4;0;CRS3035RES100mN3333300E4244600;0; 0020;60515000;APOLLON H der Gesundheitswirtschaft Bremen (Priv. FH);20102;99999;002Z;4;0;CRS3035RES100mN3333300E4244600;0;
0030;60265000;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus München (Priv. FH);20182;99999;003Z;4;0;CRS3035RES100mN2782700E4436700;0; 0030;60265000;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus München (Priv. FH);20252;99999;003Z;4;0;CRS3035RES100mN2782700E4436700;0;
0032;60338000;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Berlin (Priv. FH);20182;99999;003W;4;0;CRS3035RES100mN3270200E4551000;0; 0032;60338000;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Berlin (Priv. FH);20252;99999;003W;4;0;CRS3035RES100mN3270200E4551000;0;
0033;60678000;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Hamburg (Priv. FH);20182;99999;003V;4;0;CRS3035RES100mN3382700E4320900;0; 0033;60678000;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Hamburg (Priv. FH);20252;99999;003V;4;0;CRS3035RES100mN3382700E4320900;0;
0034;61062000;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Köln (Priv. FH);20182;99999;003U;4;0;CRS3035RES100mN3096200E4106700;0; 0034;61062000;Macromedia University of Applied Sciences Potsdam, Campus Köln (Priv. FH);20252;99999;003U;4;0;CRS3035RES100mN3096200E4106700;0;
0035;60166000;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Stuttgart (Priv. FH);20182;99999;003T;4;0;CRS3035RES100mN2855900E4263100;0; 0035;60166000;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Stuttgart (Priv. FH);20252;99999;003T;4;0;CRS3035RES100mN2855900E4263100;0;
0036;60166100;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Freiburg i. Br. (Priv. FH);20182;99999;003S;4;0;CRS3035RES100mN2766600E4159300;0; 0036;60166100;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Freiburg i. Br. (Priv. FH);20252;99999;003S;4;0;CRS3035RES100mN2766600E4159300;0;
0037;61331000;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Leipzig (Priv. FH) ;20192;99999;003P;4;0;CRS3035RES100mN3139700E4486400;0; 0037;61331000;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Leipzig (Priv. FH) ;20252;99999;003P;4;0;CRS3035RES100mN3139700E4486400;0;
0038;60776000;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Frankfurt a. M. (Priv. FH);20212;99999;003Q;4;0;CRS3035RES100mN3003700E4222600;0; 0038;60776000;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Frankfurt a. M. (Priv. FH);20252;99999;003Q;4;0;CRS3035RES100mN3003700E4222600;0;
0039;60455000;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Potsdam (Priv. FH);20252;99999;003N;4;0;CRS3035RES100mN3257800E4533500;0;
0040;61074000;FH der Diakonie Bielefeld-Bethel (Kirchl. FH);20171;99999;004Z;5;0;CRS3035RES100mN3212100E4219700;0; 0040;61074000;FH der Diakonie Bielefeld-Bethel (Kirchl. FH);20171;99999;004Z;5;0;CRS3035RES100mN3212100E4219700;0;
0060;60129000;Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Mannheim (FH);20222;99999;006Z;1;0;CRS3035RES100mN2930300E4213300;0; 0060;60129000;Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Mannheim (FH);20222;99999;006Z;1;0;CRS3035RES100mN2930300E4213300;0;
0061;60825000;Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Schwerin (FH);20222;99999;006Y;1;0;CRS3035RES100mN3395200E4414200;0; 0061;60825000;Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Schwerin (FH);20222;99999;006Y;1;0;CRS3035RES100mN3395200E4414200;0;
@ -154,7 +155,6 @@
1279;10140990;U Tübingen (Klinikum);20042;99999;127K;2;1;CRS3035RES100mN2824200E4250700;0; 1279;10140990;U Tübingen (Klinikum);20042;99999;127K;2;1;CRS3035RES100mN2824200E4250700;0;
1280;10150000;Wissenschaftliche H Bierbronnen (Priv. U);20171;99999;128Z;4;0;CRS3035RES100mN2731000E4185600;0; 1280;10150000;Wissenschaftliche H Bierbronnen (Priv. U);20171;99999;128Z;4;0;CRS3035RES100mN2731000E4185600;0;
1291;11110200;Universität Koblenz;20231;99999;129X;2;1;CRS3035RES100mN3030700E4147200;1; 1291;11110200;Universität Koblenz;20231;99999;129X;2;1;CRS3035RES100mN3030700E4147200;1;
1293;11110100;Universität Koblenz, Präsidialamt;20231;99999;129Y;2;1;CRS3035RES100mN2989300E4196200;0;
1311;10225100;U Erlangen-Nürnberg in Erlangen;20042;99999;131Y;2;1;CRS3035RES100mN2943200E4393600;1; 1311;10225100;U Erlangen-Nürnberg in Erlangen;20042;99999;131Y;2;1;CRS3035RES100mN2943200E4393600;1;
1312;10225200;U Erlangen-Nürnberg in Nürnberg;20042;99999;131X;2;1;CRS3035RES100mN2927800E4399700;1; 1312;10225200;U Erlangen-Nürnberg in Nürnberg;20042;99999;131X;2;1;CRS3035RES100mN2927800E4399700;1;
1319;10225990;U Erlangen-Nürnberg in Erlangen (Klinikum);20042;99999;131K;2;1;CRS3035RES100mN2943600E4394000;1; 1319;10225990;U Erlangen-Nürnberg in Erlangen (Klinikum);20042;99999;131K;2;1;CRS3035RES100mN2943600E4394000;1;
@ -216,6 +216,7 @@
1680;61065000;CBS International Business School, Campus Köln (Priv. FH);20201;99999;168Z;4;0;CRS3035RES100mN3094800E4106500;0; 1680;61065000;CBS International Business School, Campus Köln (Priv. FH);20201;99999;168Z;4;0;CRS3035RES100mN3094800E4106500;0;
1681;61155000;CBS International Business School, Campus Mainz (Priv. FH);20201;99999;168Y;4;0;CRS3035RES100mN2988400E4197700;0; 1681;61155000;CBS International Business School, Campus Mainz (Priv. FH);20201;99999;168Y;4;0;CRS3035RES100mN2988400E4197700;0;
1683;61065200;CBS International Business School, Campus Neuss (Priv. FH);20222;99999;168W;4;0;CRS3035RES100mN3126500E4091200;0; 1683;61065200;CBS International Business School, Campus Neuss (Priv. FH);20222;99999;168W;4;0;CRS3035RES100mN3126500E4091200;0;
1684;60840000;CBS International Business School, Campus Rostock (Priv. FH);20252;99999;168V;4;0;CRS3035RES100mN3444900E4458800;0;
1690;10310000;TU Berlin;20042;99999;169Z;2;1;CRS3035RES100mN3272100E4546700;1; 1690;10310000;TU Berlin;20042;99999;169Z;2;1;CRS3035RES100mN3272100E4546700;1;
1700;10325000;ESCP Europe Wirtschaftshochschule Berlin (Priv. U);20171;99999;170Z;4;0;CRS3035RES100mN3273300E4544100;0; 1700;10325000;ESCP Europe Wirtschaftshochschule Berlin (Priv. U);20171;99999;170Z;4;0;CRS3035RES100mN3273300E4544100;0;
1710;10245000;H für Politik München (U);20171;99999;171Z;2;0;CRS3035RES100mN2782700E4437300;0; 1710;10245000;H für Politik München (U);20171;99999;171Z;2;0;CRS3035RES100mN2782700E4437300;0;
@ -250,7 +251,7 @@
2020;40705000;Phil.-Theol. H Frankfurt a.M. (Kirchl.-Theol. H);20171;99999;202Z;5;0;CRS3035RES100mN2999300E4228900;1; 2020;40705000;Phil.-Theol. H Frankfurt a.M. (Kirchl.-Theol. H);20171;99999;202Z;5;0;CRS3035RES100mN2999300E4228900;1;
2030;41020000;Theol. Fakultät Paderborn (Kirchl.-Theol. H);20171;99999;203Z;5;0;CRS3035RES100mN3179100E4234900;1; 2030;41020000;Theol. Fakultät Paderborn (Kirchl.-Theol. H);20171;99999;203Z;5;0;CRS3035RES100mN3179100E4234900;1;
2040;41105000;Theol. Fakultät Trier (Kirchl.-Theol. H);20171;99999;204Z;5;0;CRS3035RES100mN2964700E4082300;1; 2040;41105000;Theol. Fakultät Trier (Kirchl.-Theol. H);20171;99999;204Z;5;0;CRS3035RES100mN2964700E4082300;1;
2050;41110000;Vinzenz Pallotti University Vallendar (Kirchl.-Theol. H);20221;99999;205Z;5;0;CRS3035RES100mN3034900E4152300;1; 2050;11140000;Vinzenz Pallotti University gGmbH Vallendar (Kath. U);20252;99999;205Z;5;0;CRS3035RES100mN3034900E4152300;1;
2060;41025000;Kölner H für Katholische Theologie (Kirchl.-Theol. H);20211;99999;206Z;5;0;CRS3035RES100mN3094400E4103400;0; 2060;41025000;Kölner H für Katholische Theologie (Kirchl.-Theol. H);20211;99999;206Z;5;0;CRS3035RES100mN3094400E4103400;0;
2080;41015000;Phil.-Theol. H Münster (Kirchl.-Theol. H);20171;99999;208Z;5;0;CRS3035RES100mN3208100E4159300;0; 2080;41015000;Phil.-Theol. H Münster (Kirchl.-Theol. H);20171;99999;208Z;5;0;CRS3035RES100mN3208100E4159300;0;
2100;60267000;SRH University of Applied Sciences Heidelberg in Fürth (Priv. FH);20242;99999;210Z;4;1;CRS3035RES100mN2927900E4393300;0; 2100;60267000;SRH University of Applied Sciences Heidelberg in Fürth (Priv. FH);20242;99999;210Z;4;1;CRS3035RES100mN2927900E4393300;0;
@ -267,7 +268,6 @@
2300;10175000;H für jüdische Studien Heidelberg (Kirchl. U);20171;99999;230Z;5;0;CRS3035RES100mN2922700E4226700;0; 2300;10175000;H für jüdische Studien Heidelberg (Kirchl. U);20171;99999;230Z;5;0;CRS3035RES100mN2922700E4226700;0;
2320;40715000;Luth.-Theologische H Oberursel (Kirchl.-Theol. H) ;20171;99999;232Z;5;0;CRS3035RES100mN3011800E4217800;0; 2320;40715000;Luth.-Theologische H Oberursel (Kirchl.-Theol. H) ;20171;99999;232Z;5;0;CRS3035RES100mN3011800E4217800;0;
2350;41405000;Theol. H Friedensau (Kirchl.-Theol. H);20171;99999;235Z;5;0;CRS3035RES100mN3235300E4456600;0; 2350;41405000;Theol. H Friedensau (Kirchl.-Theol. H);20171;99999;235Z;5;0;CRS3035RES100mN3235300E4456600;0;
2360;60930000;FH für Interkulturelle Theologie Hermannsburg (Priv. FH);20171;99999;236Z;4;0;CRS3035RES100mN3302600E4327800;0;
2410;60642000;Northern Business School Hamburg (Priv. FH);20141;99999;241Z;4;0;CRS3035RES100mN3384700E4327900;0; 2410;60642000;Northern Business School Hamburg (Priv. FH);20141;99999;241Z;4;0;CRS3035RES100mN3384700E4327900;0;
2420;10420000;Medizinische Hochschule Brandenburg in Neuruppin (Priv. U);20232;99999;242Z;4;0;CRS3035RES100mN3314400E4509200;1; 2420;10420000;Medizinische Hochschule Brandenburg in Neuruppin (Priv. U);20232;99999;242Z;4;0;CRS3035RES100mN3314400E4509200;1;
2421;10420100;Medizinische Hochschule Brandenburg in Neuruppin (Priv. U) ( ohne Klinikum);20232;99999;242Z;4;0;CRS3035RES100mN3314400E4509200;1; 2421;10420100;Medizinische Hochschule Brandenburg in Neuruppin (Priv. U) ( ohne Klinikum);20232;99999;242Z;4;0;CRS3035RES100mN3314400E4509200;1;
@ -347,8 +347,9 @@
3242;61645200;Duale Hochschule Gera-Eisenach in Gera (FH);20162;99999;324Y;2;0;CRS3035RES100mN3090100E4466500;0; 3242;61645200;Duale Hochschule Gera-Eisenach in Gera (FH);20162;99999;324Y;2;0;CRS3035RES100mN3090100E4466500;0;
3260;61540000;DHSH - Duale Hochschule Schleswig-Holstein, Kiel (Priv. FH);20182;99999;326Z;4;0;CRS3035RES100mN3472600E4329000;0; 3260;61540000;DHSH - Duale Hochschule Schleswig-Holstein, Kiel (Priv. FH);20182;99999;326Z;4;0;CRS3035RES100mN3472600E4329000;0;
3270;10365000;German International University Berlin (Priv. U);20192;99999;327Z;4;0;CRS3035RES100mN3279700E4543800;0; 3270;10365000;German International University Berlin (Priv. U);20192;99999;327Z;4;0;CRS3035RES100mN3279700E4543800;0;
3290;10430000;HMU Health and Medical University Erfurt in Potsdam (Priv. U);20231;99999;329Z;4;0;CRS3035RES100mN3260100E4530700;0; 3290;10430000;HMU Health and Medical University Potsdam in Potsdam (Priv. U);20252;99999;329Z;4;0;CRS3035RES100mN3260100E4530700;0;
3291;11625000;HMU Health and Medical University Erfurt in Erfurt (Priv. U);20231;99999;329Y;4;0;CRS3035RES100mN3098200E4392000;0; 3291;11625000;HMU Health and Medical University Erfurt in Erfurt (Priv. U);20231;20261;329Y;4;0;CRS3035RES100mN3098200E4392000;0;
3292;11072000;HMU Health and Medical University Potsdam in Düsseldof (Priv. U);20252;99999;329W;4;0;CRS3035RES100mN3127700E4094300;0;
3360;60345000;Digital Business University Berlin (Priv. FH);20192;99999;336Z;4;0;CRS3035RES100mN3271100E4553200;0; 3360;60345000;Digital Business University Berlin (Priv. FH);20192;99999;336Z;4;0;CRS3035RES100mN3271100E4553200;0;
3370;10227000;Technische Universität Nürnberg;20211;99999;337Z;2;0;CRS3035RES100mN2924600E4398800;1; 3370;10227000;Technische Universität Nürnberg;20211;99999;337Z;2;0;CRS3035RES100mN2924600E4398800;1;
3430;60608000;Berufliche Hochschule Hamburg (FH);20212;99999;343Z;2;0;CRS3035RES100mN3382900E4323300;0; 3430;60608000;Berufliche Hochschule Hamburg (FH);20212;99999;343Z;2;0;CRS3035RES100mN3382900E4323300;0;
@ -376,10 +377,10 @@
3980;60768000;Promotionszentrum Soziale Arbeit, Wiesbaden;20202;99999;398Z;2;0;CRS3035RES100mN2998000E4193400;0; 3980;60768000;Promotionszentrum Soziale Arbeit, Wiesbaden;20202;99999;398Z;2;0;CRS3035RES100mN2998000E4193400;0;
3990;60770000;Promotionszentrum Angewandte Informatik, Darmstadt;20202;99999;399Z;2;0;CRS3035RES100mN2973500E4222600;0; 3990;60770000;Promotionszentrum Angewandte Informatik, Darmstadt;20202;99999;399Z;2;0;CRS3035RES100mN2973500E4222600;0;
4020;B0610100;Berufsakademie Hamburg (Private BA);20172;99999;402Z;4;0;CRS3035RES100mN3372200E4320600;0; 4020;B0610100;Berufsakademie Hamburg (Private BA);20172;99999;402Z;4;0;CRS3035RES100mN3372200E4320600;0;
4030;B0705100;Akademie für Tonkunst Darmstadt;20172;99999;403Z;1;0;CRS3035RES100mN2971700E4224200;0; 4030;B0705100;Akademie für Tonkunst Darmstadt;20252;99999;403Z;3;0;CRS3035RES100mN2971700E4224200;0;
4040;B0710100;Berufsakademie Rhein-Main Rödermark (Private BA);20172;99999;404Z;4;0;CRS3035RES100mN2985400E4235300;0; 4040;B0710100;Berufsakademie Rhein-Main Rödermark (Private BA);20172;99999;404Z;4;0;CRS3035RES100mN2985400E4235300;0;
4050;B0715100;Brüder-Grimm-Berufsakademie Hanau (Private BA);20172;99999;405Z;4;0;CRS3035RES100mN3002100E4243600;0; 4050;B0715100;Brüder-Grimm-Berufsakademie Hanau (Private BA);20172;99999;405Z;4;0;CRS3035RES100mN3002100E4243600;0;
4060;B0720100;Dr. Hoch's Konservatorium - Musikakademie Frankfurt am Main;20172;99999;406Z;1;0;CRS3035RES100mN3000500E4227900;0; 4060;B0720100;Dr. Hoch's Konservatorium - Musikakademie Frankfurt am Main (Priv.);20252;99999;406Z;4;0;CRS3035RES100mN3000500E4227900;0;
4070;B0725100;Europäische Studienakademie Kälte-Klima-Lüftung (ESaK) Maintal (Private BA);20172;99999;407Z;4;0;CRS3035RES100mN3003900E4235900;0; 4070;B0725100;Europäische Studienakademie Kälte-Klima-Lüftung (ESaK) Maintal (Private BA);20172;99999;407Z;4;0;CRS3035RES100mN3003900E4235900;0;
4081;B0730100;Hessische Berufsakademie Frankfurt, Studienort Frankfurt (Private BA);20172;99999;408Y;4;0;CRS3035RES100mN3001300E4223100;0; 4081;B0730100;Hessische Berufsakademie Frankfurt, Studienort Frankfurt (Private BA);20172;99999;408Y;4;0;CRS3035RES100mN3001300E4223100;0;
4082;B0730150;Hessische Berufsakademie Frankfurt, Studienort Kassel (Private BA);20172;99999;408X;4;0;CRS3035RES100mN3134100E4285000;0; 4082;B0730150;Hessische Berufsakademie Frankfurt, Studienort Kassel (Private BA);20172;99999;408X;4;0;CRS3035RES100mN3134100E4285000;0;
@ -395,9 +396,9 @@
409B;B0760550;Intern. Berufsakademie der F+U Unternehmensgruppe Darmstadt (iba), Studienort Leipzig (Priv.);20172;99999;409P;4;0;CRS3035RES100mN3139700E4486400;0; 409B;B0760550;Intern. Berufsakademie der F+U Unternehmensgruppe Darmstadt (iba), Studienort Leipzig (Priv.);20172;99999;409P;4;0;CRS3035RES100mN3139700E4486400;0;
409C;B0760250;Intern. Berufsakademie der F+U Unternehmensgruppe Darmstadt (iba), Studienort Erfurt (Priv.);20172;99999;409V;4;0;CRS3035RES100mN3096200E4393300;0; 409C;B0760250;Intern. Berufsakademie der F+U Unternehmensgruppe Darmstadt (iba), Studienort Erfurt (Priv.);20172;99999;409V;4;0;CRS3035RES100mN3096200E4393300;0;
409D;B0760620;Intern. Berufsakademie der F+U Unternehmensgruppe Darmstadt (iba), Studienort Münster (Priv.);20222;99999;409M;4;0;CRS3035RES100mN3208000E4158400;0; 409D;B0760620;Intern. Berufsakademie der F+U Unternehmensgruppe Darmstadt (iba), Studienort Münster (Priv.);20222;99999;409M;4;0;CRS3035RES100mN3208000E4158400;0;
4100;B0770100;Musikakademie der Stadt Kassel Louis Spohr;20172;99999;410Z;1;0;CRS3035RES100mN3133500E4285700;0; 4100;B0770100;Musikakademie der Stadt Kassel Louis Spohr;20252;99999;410Z;3;0;CRS3035RES100mN3133500E4285700;0;
4110;B0775100;Private Berufsakademie Fulda;20172;99999;411Z;4;0;CRS3035RES100mN3048700E4298300;0; 4110;B0775100;Private Berufsakademie Fulda;20172;99999;411Z;4;0;CRS3035RES100mN3048700E4298300;0;
4120;B0785100;Wiesbadener Musikakademie (WMA);20172;99999;412Z;1;0;CRS3035RES100mN2997900E4195100;0; 4120;B0785100;Wiesbadener Musikakademie (WMA);20252;99999;412Z;3;0;CRS3035RES100mN2997900E4195100;0;
4130;B0910100;Berufsakademie Holztechnik Melle (Private BA);20172;99999;413Z;4;0;CRS3035RES100mN3233400E4206000;0; 4130;B0910100;Berufsakademie Holztechnik Melle (Private BA);20172;99999;413Z;4;0;CRS3035RES100mN3233400E4206000;0;
4141;B0915100;Berufsakademie für Bankwirtschaft Hannover-Rastede, Studienort Hannover (Private BA);20172;99999;414Y;4;0;CRS3035RES100mN3252700E4309000;0; 4141;B0915100;Berufsakademie für Bankwirtschaft Hannover-Rastede, Studienort Hannover (Private BA);20172;99999;414Y;4;0;CRS3035RES100mN3252700E4309000;0;
4142;B0915150;Berufsakademie für Bankwirtschaft Hannover-Rastede, Studienort Rastede (Private BA);20172;99999;414X;4;0;CRS3035RES100mN3348800E4201000;0; 4142;B0915150;Berufsakademie für Bankwirtschaft Hannover-Rastede, Studienort Rastede (Private BA);20172;99999;414X;4;0;CRS3035RES100mN3348800E4201000;0;
@ -412,6 +413,7 @@
4260;B0718000;Deutsche Berufsakademie Sport und Gesundheit (dba) in Baunatal (Private BA);20172;99999;426Z;4;0;CRS3035RES100mN3127100E4278400;0; 4260;B0718000;Deutsche Berufsakademie Sport und Gesundheit (dba) in Baunatal (Private BA);20172;99999;426Z;4;0;CRS3035RES100mN3127100E4278400;0;
4270;B0945100;Berufsakademie Wilhelmshaven (Private BA);20192;99999;427Z;4;0;CRS3035RES100mN3386500E4195100;0; 4270;B0945100;Berufsakademie Wilhelmshaven (Private BA);20192;99999;427Z;4;0;CRS3035RES100mN3386500E4195100;0;
4280;B1230100;Berufsakademie Heimerer GmbH, Quierschied (Private BA);20202;99999;428Z;4;0;CRS3035RES100mN2915300E4105500;0; 4280;B1230100;Berufsakademie Heimerer GmbH, Quierschied (Private BA);20202;99999;428Z;4;0;CRS3035RES100mN2915300E4105500;0;
4740;60298000;Promotionszentrum Integrierte Mobilität - München;20252;99999;474Z;2;0;CRS3035RES100mN2783600E4436500;0;
4750;60281000;Promotionszentrum Advanced Building Technologies, TH Rosenheim;20242;99999;475Z;2;0;CRS3035RES100mN2752600E4478700;0; 4750;60281000;Promotionszentrum Advanced Building Technologies, TH Rosenheim;20242;99999;475Z;2;0;CRS3035RES100mN2752600E4478700;0;
4760;60280000;Promotionszentrum NITRO, TH Augsburg;20242;99999;476Z;2;0;CRS3035RES100mN2805000E4388100;0; 4760;60280000;Promotionszentrum NITRO, TH Augsburg;20242;99999;476Z;2;0;CRS3035RES100mN2805000E4388100;0;
4770;60297000;Promotionszentrum Transformation und nachhaltige Entwicklung, HaW Kempten;20242;99999;477Z;2;0;CRS3035RES100mN2733600E4344500;0; 4770;60297000;Promotionszentrum Transformation und nachhaltige Entwicklung, HaW Kempten;20242;99999;477Z;2;0;CRS3035RES100mN2733600E4344500;0;
@ -431,16 +433,15 @@
4910;60294000;Promotionszentrum Angewandte Informatik, Regensburg;20232;99999;491Z;2;0;CRS3035RES100mN2880300E4472400;0; 4910;60294000;Promotionszentrum Angewandte Informatik, Regensburg;20232;99999;491Z;2;0;CRS3035RES100mN2880300E4472400;0;
4920;60295000;Promotionszentrum Materialien und Produktionstechnik, Nürnberg;20232;99999;492Z;2;0;CRS3035RES100mN2927200E4400200;0; 4920;60295000;Promotionszentrum Materialien und Produktionstechnik, Nürnberg;20232;99999;492Z;2;0;CRS3035RES100mN2927200E4400200;0;
4930;60296000;Promotionszentrum CARRI, München;20232;99999;493Z;2;0;CRS3035RES100mN2783400E4436600;0; 4930;60296000;Promotionszentrum CARRI, München;20232;99999;493Z;2;0;CRS3035RES100mN2783400E4436600;0;
4940;60438000;GU- Deutsche Hochschule für angewandte Wissenschaften, Potsdam (Priv. FH);20231;99999;494Z;4;0;CRS3035RES100mN3259400E4528700;0; 4940;60438000;Deutsche Hochschule für angewandte Wissenschaften (DHAW), Potsdam (Priv. FH);20252;99999;494Z;4;0;CRS3035RES100mN3259400E4528700;0;
4950;61046000;INU - Innovative University of Applied Sciences, Köln (Priv. FH);20241;99999;495Z;4;0;CRS3035RES100mN3097500E4102400;0; 4950;61046000;INU - Innovative University of Applied Sciences, Köln (Priv. FH);20241;99999;495Z;4;0;CRS3035RES100mN3097500E4102400;0;
4960;60185000;media Akademie - Hochschule Stuttgart (Priv. FH);20161;99999;496Z;4;0;CRS3035RES100mN2851300E4260200;0;
4981;60920300;Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Wilhelmshaven (FH);20102;99999;498Y;2;1;CRS3035RES100mN3383900E4194200;0; 4981;60920300;Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Wilhelmshaven (FH);20102;99999;498Y;2;1;CRS3035RES100mN3383900E4194200;0;
4982;60920200;Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Oldenburg (FH);20102;99999;498X;2;1;CRS3035RES100mN3338500E4200600;0; 4982;60920200;Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Oldenburg (FH);20102;99999;498X;2;1;CRS3035RES100mN3338500E4200600;0;
4983;60920100;Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Elsfleth (FH);20102;99999;498W;2;1;CRS3035RES100mN3349300E4218600;0; 4983;60920100;Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Elsfleth (FH);20102;99999;498W;2;1;CRS3035RES100mN3349300E4218600;0;
4991;60907100;Hochschule Emden/Leer in Emden (FH);20102;99999;499X;2;1;CRS3035RES100mN3365800E4133400;0; 4991;60907100;Hochschule Emden/Leer in Emden (FH);20102;99999;499X;2;1;CRS3035RES100mN3365800E4133400;0;
4992;60907200;Hochschule Emden/Leer in Leer (FH);20102;99999;499Y;2;1;CRS3035RES100mN3350100E4151200;0; 4992;60907200;Hochschule Emden/Leer in Leer (FH);20102;99999;499Y;2;1;CRS3035RES100mN3350100E4151200;0;
5010;61505000;Hochschule Flensburg (FH);20162;99999;501Z;2;1;CRS3035RES100mN3518900E4285400;0; 5010;61505000;Hochschule Flensburg (FH);20162;99999;501Z;2;1;CRS3035RES100mN3518900E4285400;0;
5020;61515000;FH Kiel;20042;99999;502Z;2;1;CRS3035RES100mN3469500E4332700;0; 5020;61515000;H für Angewandte Wissenschaften Kiel (FH);20252;99999;502Z;2;1;CRS3035RES100mN3469500E4332700;0;
5030;61520000;Technische Hochschule Lübeck (FH);20182;99999;503Z;2;1;CRS3035RES100mN3414600E4367100;0; 5030;61520000;Technische Hochschule Lübeck (FH);20182;99999;503Z;2;1;CRS3035RES100mN3414600E4367100;0;
5050;61535000;FH Wedel (Priv. FH);20171;99999;505Z;4;1;CRS3035RES100mN3385600E4303000;0; 5050;61535000;FH Wedel (Priv. FH);20171;99999;505Z;4;1;CRS3035RES100mN3385600E4303000;0;
5061;71505100;FH für Verwaltung und Dienstleistung Altenholz in Altenholz (Verw-FH);20171;99999;506Y;2;0;CRS3035RES100mN3477300E4329500;0; 5061;71505100;FH für Verwaltung und Dienstleistung Altenholz in Altenholz (Verw-FH);20171;99999;506Y;2;0;CRS3035RES100mN3477300E4329500;0;
@ -499,9 +500,9 @@
5694;60649000;International School of Management Dortmund in Hamburg (Priv. FH) ;20182;99999;569V;4;0;CRS3035RES100mN3381900E4321100;0; 5694;60649000;International School of Management Dortmund in Hamburg (Priv. FH) ;20182;99999;569V;4;0;CRS3035RES100mN3381900E4321100;0;
5695;60780000;International School of Management Dortmund in Frankfurt (Priv. FH);20192;99999;569T;4;0;CRS3035RES100mN2999200E4227000;0; 5695;60780000;International School of Management Dortmund in Frankfurt (Priv. FH);20192;99999;569T;4;0;CRS3035RES100mN2999200E4227000;0;
5696;60359000;International School of Management Dortmund in Berlin (Priv. FH);20202;99999;569S;4;0;CRS3035RES100mN3269200E4548700;0; 5696;60359000;International School of Management Dortmund in Berlin (Priv. FH);20202;99999;569S;4;0;CRS3035RES100mN3269200E4548700;0;
5701;61021200;Westfälische H in Gelsenkirchen/Bocholt/Recklinghausen (FH) in Gelsenkirchen;20211;99999;570X;2;1;CRS3035RES100mN3166800E4115000;0; 5701;61021200;Westfälische H (FH) in Gelsenkirchen;20252;99999;570X;2;1;CRS3035RES100mN3166800E4115000;0;
5702;61021100;Westfälische H in Gelsenkirchen/Bocholt/Recklinghausen (FH) in Bocholt;20211;99999;570Y;2;1;CRS3035RES100mN3197400E4090300;0; 5702;61021100;Westfälische H (FH) in Bocholt;20252;99999;570Y;2;1;CRS3035RES100mN3197400E4090300;0;
5703;61021300;Westfälische H in Gelsenkirchen/Bocholt/Recklinghausen (FH) in Recklinghausen;20211;99999;570W;2;1;CRS3035RES100mN3170500E4127900;0; 5703;61021300;Westfälische H (FH) in Recklinghausen;20252;99999;570W;2;1;CRS3035RES100mN3170500E4127900;0;
5711;61003100;FH Aachen in Aachen;20042;99999;571Y;2;1;CRS3035RES100mN3078800E4045600;0; 5711;61003100;FH Aachen in Aachen;20042;99999;571Y;2;1;CRS3035RES100mN3078800E4045600;0;
5712;61003200;FH Aachen in Jülich;20042;99999;571X;2;1;CRS3035RES100mN3097800E4066100;0; 5712;61003200;FH Aachen in Jülich;20042;99999;571X;2;1;CRS3035RES100mN3097800E4066100;0;
5720;61039100;IU Internationale Hochschule Erfurt in Bad Honnef (Priv. FH);20211;99999;572Z;4;0;CRS3035RES100mN3062600E4125000;0; 5720;61039100;IU Internationale Hochschule Erfurt in Bad Honnef (Priv. FH);20211;99999;572Z;4;0;CRS3035RES100mN3062600E4125000;0;
@ -528,8 +529,8 @@
5731;61006100;Hochschule Bielefeld in Bielefeld (FH);20231;99999;573Y;2;1;CRS3035RES100mN3215900E4217500;0; 5731;61006100;Hochschule Bielefeld in Bielefeld (FH);20231;99999;573Y;2;1;CRS3035RES100mN3215900E4217500;0;
5732;61006200;Hochschule Bielefeld in Minden (FH);20231;99999;573X;2;1;CRS3035RES100mN3243500E4246400;0; 5732;61006200;Hochschule Bielefeld in Minden (FH);20231;99999;573X;2;1;CRS3035RES100mN3243500E4246400;0;
5733;61006300;Hochschule Bielefeld in Gütersloh (FH);20231;99999;573W;2;1;CRS3035RES100mN3201000E4209500;0; 5733;61006300;Hochschule Bielefeld in Gütersloh (FH);20231;99999;573W;2;1;CRS3035RES100mN3201000E4209500;0;
5751;61009100;Hochschule Bochum (FH) in Bochum;20162;99999;575Y;2;1;CRS3035RES100mN3152100E4131300;0; 5751;61009100;Hochschule für Technik, Wirtschaft und Gesundheit Bochum (FH) in Bochum;20251;99999;575Y;2;1;CRS3035RES100mN3152100E4131300;0;
5752;61009200;Hochschule Bochum (FH) in Velbert/Heiligenhaus;20162;99999;575X;2;1;CRS3035RES100mN3139500E4109600;0; 5752;61009200;Hochschule für Technik, Wirtschaft und Gesundheit Bochum (FH) in Velbert/Heiligenhaus;20251;99999;575X;2;1;CRS3035RES100mN3139500E4109600;0;
5770;61015000;FH Dortmund;20042;99999;577Z;2;1;CRS3035RES100mN3158100E4144500;0; 5770;61015000;FH Dortmund;20042;99999;577Z;2;1;CRS3035RES100mN3158100E4144500;0;
5780;61018000;H Düsseldorf (FH);20202;99999;578Z;2;1;CRS3035RES100mN3131000E4097000;0; 5780;61018000;H Düsseldorf (FH);20202;99999;578Z;2;1;CRS3035RES100mN3131000E4097000;0;
5800;61063000;University of Europe for Applied Sciences Potsdam in Iserlohn (Priv. FH);20202;99999;580Z;4;0;CRS3035RES100mN3143900E4162200;0; 5800;61063000;University of Europe for Applied Sciences Potsdam in Iserlohn (Priv. FH);20202;99999;580Z;4;0;CRS3035RES100mN3143900E4162200;0;
@ -540,7 +541,6 @@
5821;61042200;FH des Mittelstandes (FHM) in Köln (Priv. FH);20101;99999;582W;4;0;CRS3035RES100mN3095800E4105900;0; 5821;61042200;FH des Mittelstandes (FHM) in Köln (Priv. FH);20101;99999;582W;4;0;CRS3035RES100mN3095800E4105900;0;
5822;61042300;FH des Mittelstandes (FHM) in Frechen (Priv. FH);20201;99999;582X;4;0;CRS3035RES100mN3093700E4097400;0; 5822;61042300;FH des Mittelstandes (FHM) in Frechen (Priv. FH);20201;99999;582X;4;0;CRS3035RES100mN3093700E4097400;0;
5823;60830100;FH des Mittelstandes (FHM) in Rostock (Priv. FH);20162;99999;582U;4;0;CRS3035RES100mN3444400E4460800;0; 5823;60830100;FH des Mittelstandes (FHM) in Rostock (Priv. FH);20162;99999;582U;4;0;CRS3035RES100mN3444400E4460800;0;
5824;60830200;FH des Mittelstandes (FHM) in Schwerin (Priv. FH);20162;99999;582V;4;0;CRS3035RES100mN3392500E4414500;0;
5825;60944000;FH des Mittelstandes (FHM) in Hannover (Priv. FH);20162;99999;582T;4;0;CRS3035RES100mN3253500E4304000;0; 5825;60944000;FH des Mittelstandes (FHM) in Hannover (Priv. FH);20162;99999;582T;4;0;CRS3035RES100mN3253500E4304000;0;
5826;60258000;FH des Mittelstandes (FHM) in Bamberg (Priv. FH) ;20171;99999;582S;4;0;CRS3035RES100mN2977800E4386800;0; 5826;60258000;FH des Mittelstandes (FHM) in Bamberg (Priv. FH) ;20171;99999;582S;4;0;CRS3035RES100mN2977800E4386800;0;
5827;60354000;FH des Mittelstandes (FHM) in Berlin (Priv. FH);20182;99999;582R;4;0;CRS3035RES100mN3272100E4546300;0; 5827;60354000;FH des Mittelstandes (FHM) in Berlin (Priv. FH);20182;99999;582R;4;0;CRS3035RES100mN3272100E4546300;0;
@ -573,7 +573,7 @@
6077;71015600;Hochschule für Polizei und öffentliche Verwaltung NW in Münster (Verw-FH);20192;99999;607T;2;0;CRS3035RES100mN3210700E4158400;0; 6077;71015600;Hochschule für Polizei und öffentliche Verwaltung NW in Münster (Verw-FH);20192;99999;607T;2;0;CRS3035RES100mN3210700E4158400;0;
607A;71015100;Hochschule für Polizei und öffentliche Verwaltung NW in Bielefeld (Verw-FH);20192;99999;607Y;2;0;CRS3035RES100mN3214000E4221700;0; 607A;71015100;Hochschule für Polizei und öffentliche Verwaltung NW in Bielefeld (Verw-FH);20192;99999;607Y;2;0;CRS3035RES100mN3214000E4221700;0;
607C;71015050;Hochschule für Polizei und öffentliche Verwaltung NW in Aachen (Verw-FH);20192;99999;607M;2;0;CRS3035RES100mN3081600E4046400;0; 607C;71015050;Hochschule für Polizei und öffentliche Verwaltung NW in Aachen (Verw-FH);20192;99999;607M;2;0;CRS3035RES100mN3081600E4046400;0;
6180;71005000;FH für Rechtspflege NW in Bad Münstereifel (Verw-FH);20171;99999;618Z;2;0;CRS3035RES100mN3055100E4092000;0; 6180;71005000;H der Justiz NW in Bad Münstereifel (Verw-FH);20252;99999;618Z;2;0;CRS3035RES100mN3055100E4092000;0;
6190;71010000;Hochschule für Finanzen Nordrhein-Westfalen in Nordkirchen (Verw-FH);20201;99999;619Z;2;0;CRS3035RES100mN3183700E4150100;0; 6190;71010000;Hochschule für Finanzen Nordrhein-Westfalen in Nordkirchen (Verw-FH);20201;99999;619Z;2;0;CRS3035RES100mN3183700E4150100;0;
6202;70310002;Hochschule des Bundes für öffentliche Verwaltung, FB Sozialversicherung in Berlin;20221;99999;620X;1;0;CRS3035RES100mN3274500E4542500;0; 6202;70310002;Hochschule des Bundes für öffentliche Verwaltung, FB Sozialversicherung in Berlin;20221;99999;620X;1;0;CRS3035RES100mN3274500E4542500;0;
6203;70720100;Hochschule des Bundes für öffentliche Verwaltung, FB Wetterdienst in Langen;20142;99999;620W;1;0;CRS3035RES100mN2999700E4231400;0; 6203;70720100;Hochschule des Bundes für öffentliche Verwaltung, FB Wetterdienst in Langen;20142;99999;620W;1;0;CRS3035RES100mN2999700E4231400;0;
@ -635,7 +635,7 @@
6582;61130100;Hochschule Trier (FH) in Birkenfeld;20131;99999;658Y;2;1;CRS3035RES100mN2947800E4116400;0; 6582;61130100;Hochschule Trier (FH) in Birkenfeld;20131;99999;658Y;2;1;CRS3035RES100mN2947800E4116400;0;
6583;61130200;Hochschule Trier (FH) in Idar-Oberstein;20131;99999;658X;2;1;CRS3035RES100mN2959800E4127200;0; 6583;61130200;Hochschule Trier (FH) in Idar-Oberstein;20131;99999;658X;2;1;CRS3035RES100mN2959800E4127200;0;
6600;61145000;Katholische Hochschule Mainz (Kirchl. FH);20171;99999;660Z;5;1;CRS3035RES100mN2988600E4195700;0; 6600;61145000;Katholische Hochschule Mainz (Kirchl. FH);20171;99999;660Z;5;1;CRS3035RES100mN2988600E4195700;0;
6620;71110000;Hochschule der Deutschen Bundesbank Hachenburg (Priv. Verw-FH);20242;99999;662Z;4;0;CRS3035RES100mN3063300E4167300;0; 6620;71110000;Hochschule der Deutschen Bundesbank Hachenburg (Verw-FH);20171;99999;662Z;1;0;CRS3035RES100mN3063300E4167300;0;
6631;71115200;Hochschule für öffentliche Verwaltung Rheinland-Pfalz (HöV) Mayen, FB Innere Verwaltung in Mayen;20151;99999;663X;2;0;CRS3035RES100mN3027700E4123700;0; 6631;71115200;Hochschule für öffentliche Verwaltung Rheinland-Pfalz (HöV) Mayen, FB Innere Verwaltung in Mayen;20151;99999;663X;2;0;CRS3035RES100mN3027700E4123700;0;
6640;71105000;Hochschule für Finanzen Rheinland-Pfalz (HFin) in Edenkoben (Verw-FH);20172;99999;664Z;2;0;CRS3035RES100mN2909600E4185000;0; 6640;71105000;Hochschule für Finanzen Rheinland-Pfalz (HFin) in Edenkoben (Verw-FH);20172;99999;664Z;2;0;CRS3035RES100mN2909600E4185000;0;
6650;61120000;Hochschule für Wirtschaft und Gesellschaft Ludwigshafen (FH);20191;99999;665Z;2;1;CRS3035RES100mN2930100E4206700;0; 6650;61120000;Hochschule für Wirtschaft und Gesellschaft Ludwigshafen (FH);20191;99999;665Z;2;1;CRS3035RES100mN2930100E4206700;0;
@ -764,6 +764,7 @@
7973;60667000;SRH University of Applied Sciences Heidelberg in Hamburg (Priv. FH) ;20242;99999;797X;4;0;CRS3035RES100mN3383300E4320400;0; 7973;60667000;SRH University of Applied Sciences Heidelberg in Hamburg (Priv. FH) ;20242;99999;797X;4;0;CRS3035RES100mN3383300E4320400;0;
7974;61542000;SRH University of Applied Sciences Heidelberg in Heide (Priv. FH);20242;99999;797W;4;0;CRS3035RES100mN3455100E4261000;0; 7974;61542000;SRH University of Applied Sciences Heidelberg in Heide (Priv. FH);20242;99999;797W;4;0;CRS3035RES100mN3455100E4261000;0;
7975;60530000;SRH University of Applied Sciences Heidelberg in Bremen (Priv. FH);20241;99999;797V;4;0;CRS3035RES100mN3333300E4244600;0; 7975;60530000;SRH University of Applied Sciences Heidelberg in Bremen (Priv. FH);20241;99999;797V;4;0;CRS3035RES100mN3333300E4244600;0;
7976;61338100;SRH University of Applied Sciences Heidelberg in Leipzig (Priv. FH);20252;99999;797U;4;0;CRS3035RES100mN3138200E4488000;0;
7990;70610000;Norddeutsche Akademie für Finanzen und Steuerrecht Hamburg (Verw-FH);20171;99999;799Z;2;0;CRS3035RES100mN3383700E4324700;0; 7990;70610000;Norddeutsche Akademie für Finanzen und Steuerrecht Hamburg (Verw-FH);20171;99999;799Z;2;0;CRS3035RES100mN3383700E4324700;0;
8000;61420000;Hochschule Merseburg (FH);20102;99999;800Z;2;1;CRS3035RES100mN3138700E4458500;0; 8000;61420000;Hochschule Merseburg (FH);20102;99999;800Z;2;1;CRS3035RES100mN3138700E4458500;0;
8011;61415100;H Magdeburg-Stendal in Magdeburg (FH);20102;99999;801Y;2;1;CRS3035RES100mN3227000E4435500;0; 8011;61415100;H Magdeburg-Stendal in Magdeburg (FH);20102;99999;801Y;2;1;CRS3035RES100mN3227000E4435500;0;
@ -843,7 +844,7 @@
8225;61328500;Duale Hochschule Sachsen - Leipzig (FH);20251;99999;822U;2;0;CRS3035RES100mN3135800E4481500;0; 8225;61328500;Duale Hochschule Sachsen - Leipzig (FH);20251;99999;822U;2;0;CRS3035RES100mN3135800E4481500;0;
8226;61328600;Duale Hochschule Sachsen - Plauen (FH);20251;99999;822T;2;0;CRS3035RES100mN3044700E4472800;0; 8226;61328600;Duale Hochschule Sachsen - Plauen (FH);20251;99999;822T;2;0;CRS3035RES100mN3044700E4472800;0;
8227;61328700;Duale Hochschule Sachsen - Riesa (FH);20251;99999;822S;2;0;CRS3035RES100mN3139100E4550100;0; 8227;61328700;Duale Hochschule Sachsen - Riesa (FH);20251;99999;822S;2;0;CRS3035RES100mN3139100E4550100;0;
8230;10435000;German University of Applied Sciences Potsdam (Priv. U);20251;99999;823Z;4;0;CRS3035RES100mN3257800E4533100;0; 8230;10435000;German University of Digital Science (GUDS), Potsdam (Priv. U);20252;99999;823Z;4;0;CRS3035RES100mN3257800E4533100;0;
9000;89805000;Sonstige deutsche Hochschulen;20042;99999;900Z;6;0;;1; 9000;89805000;Sonstige deutsche Hochschulen;20042;99999;900Z;6;0;;1;
9500;89850000;Berufsakademie in Deutschland;20171;99999;950Z;6;0;;0; 9500;89850000;Berufsakademie in Deutschland;20171;99999;950Z;6;0;;0;
9990;99905000;Hochschulen im Ausland;20042;99999;999Z;6;0;;1; 9990;99905000;Hochschulen im Ausland;20042;99999;999Z;6;0;;1;
@ -851,4 +852,4 @@
9991;10920020;HIS Test Eigene Hochschule;20042;99999;9991;2;1;;1; 9991;10920020;HIS Test Eigene Hochschule;20042;99999;9991;2;1;;1;
7777;10920030;HIS Test Eigene Hochschule;20042;99999;7777;2;1;;1; 7777;10920030;HIS Test Eigene Hochschule;20042;99999;7777;2;1;;1;
1240;10920040;HIS Test Eigene Hochschule;20042;99999;1240;2;1;;1; 1240;10920040;HIS Test Eigene Hochschule;20042;99999;1240;2;1;;1;
6666;10920050;HIS Test Eigene Hochschule;20042;99999;6666;2;1;;1; 6666;10920050;HIS Test Eigene Hochschule;20042;99999;6666;2;1;;1;

1 0011 10725101 U Kassel in Kassel (ohne Kunsthochschule) 20042 99999 001Y 2 1 CRS3035RES100mN3134700E4286600 1
3 0013 10725102 U Kassel in Kassel (Kunsthochschule) 20042 99999 001Y 2 1 CRS3035RES100mN3132800E4285400 1
4 0014 10725103 U Kassel in Kassel (Intern. Management School) 20171 99999 001Y 2 1 CRS3035RES100mN3135000E4286500 0
5 0020 60515000 APOLLON H der Gesundheitswirtschaft Bremen (Priv. FH) 20102 99999 002Z 4 0 CRS3035RES100mN3333300E4244600 0
6 0030 60265000 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus München (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus München (Priv. FH) 20182 20252 99999 003Z 4 0 CRS3035RES100mN2782700E4436700 0
7 0032 60338000 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Berlin (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Berlin (Priv. FH) 20182 20252 99999 003W 4 0 CRS3035RES100mN3270200E4551000 0
8 0033 60678000 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Hamburg (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Hamburg (Priv. FH) 20182 20252 99999 003V 4 0 CRS3035RES100mN3382700E4320900 0
9 0034 61062000 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Köln (Priv. FH) Macromedia University of Applied Sciences Potsdam, Campus Köln (Priv. FH) 20182 20252 99999 003U 4 0 CRS3035RES100mN3096200E4106700 0
10 0035 60166000 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Stuttgart (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Stuttgart (Priv. FH) 20182 20252 99999 003T 4 0 CRS3035RES100mN2855900E4263100 0
11 0036 60166100 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Freiburg i. Br. (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Freiburg i. Br. (Priv. FH) 20182 20252 99999 003S 4 0 CRS3035RES100mN2766600E4159300 0
12 0037 61331000 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Leipzig (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Leipzig (Priv. FH) 20192 20252 99999 003P 4 0 CRS3035RES100mN3139700E4486400 0
13 0038 60776000 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Frankfurt a. M. (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Frankfurt a. M. (Priv. FH) 20212 20252 99999 003Q 4 0 CRS3035RES100mN3003700E4222600 0
14 0039 60455000 Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Potsdam (Priv. FH) 20252 99999 003N 4 0 CRS3035RES100mN3257800E4533500 0
15 0040 61074000 FH der Diakonie Bielefeld-Bethel (Kirchl. FH) 20171 99999 004Z 5 0 CRS3035RES100mN3212100E4219700 0
16 0060 60129000 Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Mannheim (FH) 20222 99999 006Z 1 0 CRS3035RES100mN2930300E4213300 0
17 0061 60825000 Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Schwerin (FH) 20222 99999 006Y 1 0 CRS3035RES100mN3395200E4414200 0
155 1279 10140990 U Tübingen (Klinikum) 20042 99999 127K 2 1 CRS3035RES100mN2824200E4250700 0
156 1280 10150000 Wissenschaftliche H Bierbronnen (Priv. U) 20171 99999 128Z 4 0 CRS3035RES100mN2731000E4185600 0
157 1291 11110200 Universität Koblenz 20231 99999 129X 2 1 CRS3035RES100mN3030700E4147200 1
1293 11110100 Universität Koblenz, Präsidialamt 20231 99999 129Y 2 1 CRS3035RES100mN2989300E4196200 0
158 1311 10225100 U Erlangen-Nürnberg in Erlangen 20042 99999 131Y 2 1 CRS3035RES100mN2943200E4393600 1
159 1312 10225200 U Erlangen-Nürnberg in Nürnberg 20042 99999 131X 2 1 CRS3035RES100mN2927800E4399700 1
160 1319 10225990 U Erlangen-Nürnberg in Erlangen (Klinikum) 20042 99999 131K 2 1 CRS3035RES100mN2943600E4394000 1
216 1680 61065000 CBS International Business School, Campus Köln (Priv. FH) 20201 99999 168Z 4 0 CRS3035RES100mN3094800E4106500 0
217 1681 61155000 CBS International Business School, Campus Mainz (Priv. FH) 20201 99999 168Y 4 0 CRS3035RES100mN2988400E4197700 0
218 1683 61065200 CBS International Business School, Campus Neuss (Priv. FH) 20222 99999 168W 4 0 CRS3035RES100mN3126500E4091200 0
219 1684 60840000 CBS International Business School, Campus Rostock (Priv. FH) 20252 99999 168V 4 0 CRS3035RES100mN3444900E4458800 0
220 1690 10310000 TU Berlin 20042 99999 169Z 2 1 CRS3035RES100mN3272100E4546700 1
221 1700 10325000 ESCP Europe Wirtschaftshochschule Berlin (Priv. U) 20171 99999 170Z 4 0 CRS3035RES100mN3273300E4544100 0
222 1710 10245000 H für Politik München (U) 20171 99999 171Z 2 0 CRS3035RES100mN2782700E4437300 0
251 2020 40705000 Phil.-Theol. H Frankfurt a.M. (Kirchl.-Theol. H) 20171 99999 202Z 5 0 CRS3035RES100mN2999300E4228900 1
252 2030 41020000 Theol. Fakultät Paderborn (Kirchl.-Theol. H) 20171 99999 203Z 5 0 CRS3035RES100mN3179100E4234900 1
253 2040 41105000 Theol. Fakultät Trier (Kirchl.-Theol. H) 20171 99999 204Z 5 0 CRS3035RES100mN2964700E4082300 1
254 2050 41110000 11140000 Vinzenz Pallotti University Vallendar (Kirchl.-Theol. H) Vinzenz Pallotti University gGmbH Vallendar (Kath. U) 20221 20252 99999 205Z 5 0 CRS3035RES100mN3034900E4152300 1
255 2060 41025000 Kölner H für Katholische Theologie (Kirchl.-Theol. H) 20211 99999 206Z 5 0 CRS3035RES100mN3094400E4103400 0
256 2080 41015000 Phil.-Theol. H Münster (Kirchl.-Theol. H) 20171 99999 208Z 5 0 CRS3035RES100mN3208100E4159300 0
257 2100 60267000 SRH University of Applied Sciences Heidelberg in Fürth (Priv. FH) 20242 99999 210Z 4 1 CRS3035RES100mN2927900E4393300 0
268 2300 10175000 H für jüdische Studien Heidelberg (Kirchl. U) 20171 99999 230Z 5 0 CRS3035RES100mN2922700E4226700 0
269 2320 40715000 Luth.-Theologische H Oberursel (Kirchl.-Theol. H) 20171 99999 232Z 5 0 CRS3035RES100mN3011800E4217800 0
270 2350 41405000 Theol. H Friedensau (Kirchl.-Theol. H) 20171 99999 235Z 5 0 CRS3035RES100mN3235300E4456600 0
2360 60930000 FH für Interkulturelle Theologie Hermannsburg (Priv. FH) 20171 99999 236Z 4 0 CRS3035RES100mN3302600E4327800 0
271 2410 60642000 Northern Business School Hamburg (Priv. FH) 20141 99999 241Z 4 0 CRS3035RES100mN3384700E4327900 0
272 2420 10420000 Medizinische Hochschule Brandenburg in Neuruppin (Priv. U) 20232 99999 242Z 4 0 CRS3035RES100mN3314400E4509200 1
273 2421 10420100 Medizinische Hochschule Brandenburg in Neuruppin (Priv. U) ( ohne Klinikum) 20232 99999 242Z 4 0 CRS3035RES100mN3314400E4509200 1
347 3242 61645200 Duale Hochschule Gera-Eisenach in Gera (FH) 20162 99999 324Y 2 0 CRS3035RES100mN3090100E4466500 0
348 3260 61540000 DHSH - Duale Hochschule Schleswig-Holstein, Kiel (Priv. FH) 20182 99999 326Z 4 0 CRS3035RES100mN3472600E4329000 0
349 3270 10365000 German International University Berlin (Priv. U) 20192 99999 327Z 4 0 CRS3035RES100mN3279700E4543800 0
350 3290 10430000 HMU Health and Medical University Erfurt in Potsdam (Priv. U) HMU Health and Medical University Potsdam in Potsdam (Priv. U) 20231 20252 99999 329Z 4 0 CRS3035RES100mN3260100E4530700 0
351 3291 11625000 HMU Health and Medical University Erfurt in Erfurt (Priv. U) 20231 99999 20261 329Y 4 0 CRS3035RES100mN3098200E4392000 0
352 3292 11072000 HMU Health and Medical University Potsdam in Düsseldof (Priv. U) 20252 99999 329W 4 0 CRS3035RES100mN3127700E4094300 0
353 3360 60345000 Digital Business University Berlin (Priv. FH) 20192 99999 336Z 4 0 CRS3035RES100mN3271100E4553200 0
354 3370 10227000 Technische Universität Nürnberg 20211 99999 337Z 2 0 CRS3035RES100mN2924600E4398800 1
355 3430 60608000 Berufliche Hochschule Hamburg (FH) 20212 99999 343Z 2 0 CRS3035RES100mN3382900E4323300 0
377 3980 60768000 Promotionszentrum Soziale Arbeit, Wiesbaden 20202 99999 398Z 2 0 CRS3035RES100mN2998000E4193400 0
378 3990 60770000 Promotionszentrum Angewandte Informatik, Darmstadt 20202 99999 399Z 2 0 CRS3035RES100mN2973500E4222600 0
379 4020 B0610100 Berufsakademie Hamburg (Private BA) 20172 99999 402Z 4 0 CRS3035RES100mN3372200E4320600 0
380 4030 B0705100 Akademie für Tonkunst Darmstadt 20172 20252 99999 403Z 1 3 0 CRS3035RES100mN2971700E4224200 0
381 4040 B0710100 Berufsakademie Rhein-Main Rödermark (Private BA) 20172 99999 404Z 4 0 CRS3035RES100mN2985400E4235300 0
382 4050 B0715100 Brüder-Grimm-Berufsakademie Hanau (Private BA) 20172 99999 405Z 4 0 CRS3035RES100mN3002100E4243600 0
383 4060 B0720100 Dr. Hoch's Konservatorium - Musikakademie Frankfurt am Main Dr. Hoch's Konservatorium - Musikakademie Frankfurt am Main (Priv.) 20172 20252 99999 406Z 1 4 0 CRS3035RES100mN3000500E4227900 0
384 4070 B0725100 Europäische Studienakademie Kälte-Klima-Lüftung (ESaK) Maintal (Private BA) 20172 99999 407Z 4 0 CRS3035RES100mN3003900E4235900 0
385 4081 B0730100 Hessische Berufsakademie Frankfurt, Studienort Frankfurt (Private BA) 20172 99999 408Y 4 0 CRS3035RES100mN3001300E4223100 0
386 4082 B0730150 Hessische Berufsakademie Frankfurt, Studienort Kassel (Private BA) 20172 99999 408X 4 0 CRS3035RES100mN3134100E4285000 0
396 409B B0760550 Intern. Berufsakademie der F+U Unternehmensgruppe Darmstadt (iba), Studienort Leipzig (Priv.) 20172 99999 409P 4 0 CRS3035RES100mN3139700E4486400 0
397 409C B0760250 Intern. Berufsakademie der F+U Unternehmensgruppe Darmstadt (iba), Studienort Erfurt (Priv.) 20172 99999 409V 4 0 CRS3035RES100mN3096200E4393300 0
398 409D B0760620 Intern. Berufsakademie der F+U Unternehmensgruppe Darmstadt (iba), Studienort Münster (Priv.) 20222 99999 409M 4 0 CRS3035RES100mN3208000E4158400 0
399 4100 B0770100 Musikakademie der Stadt Kassel Louis Spohr 20172 20252 99999 410Z 1 3 0 CRS3035RES100mN3133500E4285700 0
400 4110 B0775100 Private Berufsakademie Fulda 20172 99999 411Z 4 0 CRS3035RES100mN3048700E4298300 0
401 4120 B0785100 Wiesbadener Musikakademie (WMA) 20172 20252 99999 412Z 1 3 0 CRS3035RES100mN2997900E4195100 0
402 4130 B0910100 Berufsakademie Holztechnik Melle (Private BA) 20172 99999 413Z 4 0 CRS3035RES100mN3233400E4206000 0
403 4141 B0915100 Berufsakademie für Bankwirtschaft Hannover-Rastede, Studienort Hannover (Private BA) 20172 99999 414Y 4 0 CRS3035RES100mN3252700E4309000 0
404 4142 B0915150 Berufsakademie für Bankwirtschaft Hannover-Rastede, Studienort Rastede (Private BA) 20172 99999 414X 4 0 CRS3035RES100mN3348800E4201000 0
413 4260 B0718000 Deutsche Berufsakademie Sport und Gesundheit (dba) in Baunatal (Private BA) 20172 99999 426Z 4 0 CRS3035RES100mN3127100E4278400 0
414 4270 B0945100 Berufsakademie Wilhelmshaven (Private BA) 20192 99999 427Z 4 0 CRS3035RES100mN3386500E4195100 0
415 4280 B1230100 Berufsakademie Heimerer GmbH, Quierschied (Private BA) 20202 99999 428Z 4 0 CRS3035RES100mN2915300E4105500 0
416 4740 60298000 Promotionszentrum Integrierte Mobilität - München 20252 99999 474Z 2 0 CRS3035RES100mN2783600E4436500 0
417 4750 60281000 Promotionszentrum Advanced Building Technologies, TH Rosenheim 20242 99999 475Z 2 0 CRS3035RES100mN2752600E4478700 0
418 4760 60280000 Promotionszentrum NITRO, TH Augsburg 20242 99999 476Z 2 0 CRS3035RES100mN2805000E4388100 0
419 4770 60297000 Promotionszentrum Transformation und nachhaltige Entwicklung, HaW Kempten 20242 99999 477Z 2 0 CRS3035RES100mN2733600E4344500 0
433 4910 60294000 Promotionszentrum Angewandte Informatik, Regensburg 20232 99999 491Z 2 0 CRS3035RES100mN2880300E4472400 0
434 4920 60295000 Promotionszentrum Materialien und Produktionstechnik, Nürnberg 20232 99999 492Z 2 0 CRS3035RES100mN2927200E4400200 0
435 4930 60296000 Promotionszentrum CARRI, München 20232 99999 493Z 2 0 CRS3035RES100mN2783400E4436600 0
436 4940 60438000 GU- Deutsche Hochschule für angewandte Wissenschaften, Potsdam (Priv. FH) Deutsche Hochschule für angewandte Wissenschaften (DHAW), Potsdam (Priv. FH) 20231 20252 99999 494Z 4 0 CRS3035RES100mN3259400E4528700 0
437 4950 61046000 INU - Innovative University of Applied Sciences, Köln (Priv. FH) 20241 99999 495Z 4 0 CRS3035RES100mN3097500E4102400 0
4960 60185000 media Akademie - Hochschule Stuttgart (Priv. FH) 20161 99999 496Z 4 0 CRS3035RES100mN2851300E4260200 0
438 4981 60920300 Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Wilhelmshaven (FH) 20102 99999 498Y 2 1 CRS3035RES100mN3383900E4194200 0
439 4982 60920200 Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Oldenburg (FH) 20102 99999 498X 2 1 CRS3035RES100mN3338500E4200600 0
440 4983 60920100 Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Elsfleth (FH) 20102 99999 498W 2 1 CRS3035RES100mN3349300E4218600 0
441 4991 60907100 Hochschule Emden/Leer in Emden (FH) 20102 99999 499X 2 1 CRS3035RES100mN3365800E4133400 0
442 4992 60907200 Hochschule Emden/Leer in Leer (FH) 20102 99999 499Y 2 1 CRS3035RES100mN3350100E4151200 0
443 5010 61505000 Hochschule Flensburg (FH) 20162 99999 501Z 2 1 CRS3035RES100mN3518900E4285400 0
444 5020 61515000 FH Kiel H für Angewandte Wissenschaften Kiel (FH) 20042 20252 99999 502Z 2 1 CRS3035RES100mN3469500E4332700 0
445 5030 61520000 Technische Hochschule Lübeck (FH) 20182 99999 503Z 2 1 CRS3035RES100mN3414600E4367100 0
446 5050 61535000 FH Wedel (Priv. FH) 20171 99999 505Z 4 1 CRS3035RES100mN3385600E4303000 0
447 5061 71505100 FH für Verwaltung und Dienstleistung Altenholz in Altenholz (Verw-FH) 20171 99999 506Y 2 0 CRS3035RES100mN3477300E4329500 0
500 5694 60649000 International School of Management Dortmund in Hamburg (Priv. FH) 20182 99999 569V 4 0 CRS3035RES100mN3381900E4321100 0
501 5695 60780000 International School of Management Dortmund in Frankfurt (Priv. FH) 20192 99999 569T 4 0 CRS3035RES100mN2999200E4227000 0
502 5696 60359000 International School of Management Dortmund in Berlin (Priv. FH) 20202 99999 569S 4 0 CRS3035RES100mN3269200E4548700 0
503 5701 61021200 Westfälische H in Gelsenkirchen/Bocholt/Recklinghausen (FH) in Gelsenkirchen Westfälische H (FH) in Gelsenkirchen 20211 20252 99999 570X 2 1 CRS3035RES100mN3166800E4115000 0
504 5702 61021100 Westfälische H in Gelsenkirchen/Bocholt/Recklinghausen (FH) in Bocholt Westfälische H (FH) in Bocholt 20211 20252 99999 570Y 2 1 CRS3035RES100mN3197400E4090300 0
505 5703 61021300 Westfälische H in Gelsenkirchen/Bocholt/Recklinghausen (FH) in Recklinghausen Westfälische H (FH) in Recklinghausen 20211 20252 99999 570W 2 1 CRS3035RES100mN3170500E4127900 0
506 5711 61003100 FH Aachen in Aachen 20042 99999 571Y 2 1 CRS3035RES100mN3078800E4045600 0
507 5712 61003200 FH Aachen in Jülich 20042 99999 571X 2 1 CRS3035RES100mN3097800E4066100 0
508 5720 61039100 IU Internationale Hochschule Erfurt in Bad Honnef (Priv. FH) 20211 99999 572Z 4 0 CRS3035RES100mN3062600E4125000 0
529 5731 61006100 Hochschule Bielefeld in Bielefeld (FH) 20231 99999 573Y 2 1 CRS3035RES100mN3215900E4217500 0
530 5732 61006200 Hochschule Bielefeld in Minden (FH) 20231 99999 573X 2 1 CRS3035RES100mN3243500E4246400 0
531 5733 61006300 Hochschule Bielefeld in Gütersloh (FH) 20231 99999 573W 2 1 CRS3035RES100mN3201000E4209500 0
532 5751 61009100 Hochschule Bochum (FH) in Bochum Hochschule für Technik, Wirtschaft und Gesundheit Bochum (FH) in Bochum 20162 20251 99999 575Y 2 1 CRS3035RES100mN3152100E4131300 0
533 5752 61009200 Hochschule Bochum (FH) in Velbert/Heiligenhaus Hochschule für Technik, Wirtschaft und Gesundheit Bochum (FH) in Velbert/Heiligenhaus 20162 20251 99999 575X 2 1 CRS3035RES100mN3139500E4109600 0
534 5770 61015000 FH Dortmund 20042 99999 577Z 2 1 CRS3035RES100mN3158100E4144500 0
535 5780 61018000 H Düsseldorf (FH) 20202 99999 578Z 2 1 CRS3035RES100mN3131000E4097000 0
536 5800 61063000 University of Europe for Applied Sciences Potsdam in Iserlohn (Priv. FH) 20202 99999 580Z 4 0 CRS3035RES100mN3143900E4162200 0
541 5821 61042200 FH des Mittelstandes (FHM) in Köln (Priv. FH) 20101 99999 582W 4 0 CRS3035RES100mN3095800E4105900 0
542 5822 61042300 FH des Mittelstandes (FHM) in Frechen (Priv. FH) 20201 99999 582X 4 0 CRS3035RES100mN3093700E4097400 0
543 5823 60830100 FH des Mittelstandes (FHM) in Rostock (Priv. FH) 20162 99999 582U 4 0 CRS3035RES100mN3444400E4460800 0
5824 60830200 FH des Mittelstandes (FHM) in Schwerin (Priv. FH) 20162 99999 582V 4 0 CRS3035RES100mN3392500E4414500 0
544 5825 60944000 FH des Mittelstandes (FHM) in Hannover (Priv. FH) 20162 99999 582T 4 0 CRS3035RES100mN3253500E4304000 0
545 5826 60258000 FH des Mittelstandes (FHM) in Bamberg (Priv. FH) 20171 99999 582S 4 0 CRS3035RES100mN2977800E4386800 0
546 5827 60354000 FH des Mittelstandes (FHM) in Berlin (Priv. FH) 20182 99999 582R 4 0 CRS3035RES100mN3272100E4546300 0
573 6077 71015600 Hochschule für Polizei und öffentliche Verwaltung NW in Münster (Verw-FH) 20192 99999 607T 2 0 CRS3035RES100mN3210700E4158400 0
574 607A 71015100 Hochschule für Polizei und öffentliche Verwaltung NW in Bielefeld (Verw-FH) 20192 99999 607Y 2 0 CRS3035RES100mN3214000E4221700 0
575 607C 71015050 Hochschule für Polizei und öffentliche Verwaltung NW in Aachen (Verw-FH) 20192 99999 607M 2 0 CRS3035RES100mN3081600E4046400 0
576 6180 71005000 FH für Rechtspflege NW in Bad Münstereifel (Verw-FH) H der Justiz NW in Bad Münstereifel (Verw-FH) 20171 20252 99999 618Z 2 0 CRS3035RES100mN3055100E4092000 0
577 6190 71010000 Hochschule für Finanzen Nordrhein-Westfalen in Nordkirchen (Verw-FH) 20201 99999 619Z 2 0 CRS3035RES100mN3183700E4150100 0
578 6202 70310002 Hochschule des Bundes für öffentliche Verwaltung, FB Sozialversicherung in Berlin 20221 99999 620X 1 0 CRS3035RES100mN3274500E4542500 0
579 6203 70720100 Hochschule des Bundes für öffentliche Verwaltung, FB Wetterdienst in Langen 20142 99999 620W 1 0 CRS3035RES100mN2999700E4231400 0
635 6582 61130100 Hochschule Trier (FH) in Birkenfeld 20131 99999 658Y 2 1 CRS3035RES100mN2947800E4116400 0
636 6583 61130200 Hochschule Trier (FH) in Idar-Oberstein 20131 99999 658X 2 1 CRS3035RES100mN2959800E4127200 0
637 6600 61145000 Katholische Hochschule Mainz (Kirchl. FH) 20171 99999 660Z 5 1 CRS3035RES100mN2988600E4195700 0
638 6620 71110000 Hochschule der Deutschen Bundesbank Hachenburg (Priv. Verw-FH) Hochschule der Deutschen Bundesbank Hachenburg (Verw-FH) 20242 20171 99999 662Z 4 1 0 CRS3035RES100mN3063300E4167300 0
639 6631 71115200 Hochschule für öffentliche Verwaltung Rheinland-Pfalz (HöV) Mayen, FB Innere Verwaltung in Mayen 20151 99999 663X 2 0 CRS3035RES100mN3027700E4123700 0
640 6640 71105000 Hochschule für Finanzen Rheinland-Pfalz (HFin) in Edenkoben (Verw-FH) 20172 99999 664Z 2 0 CRS3035RES100mN2909600E4185000 0
641 6650 61120000 Hochschule für Wirtschaft und Gesellschaft Ludwigshafen (FH) 20191 99999 665Z 2 1 CRS3035RES100mN2930100E4206700 0
764 7973 60667000 SRH University of Applied Sciences Heidelberg in Hamburg (Priv. FH) 20242 99999 797X 4 0 CRS3035RES100mN3383300E4320400 0
765 7974 61542000 SRH University of Applied Sciences Heidelberg in Heide (Priv. FH) 20242 99999 797W 4 0 CRS3035RES100mN3455100E4261000 0
766 7975 60530000 SRH University of Applied Sciences Heidelberg in Bremen (Priv. FH) 20241 99999 797V 4 0 CRS3035RES100mN3333300E4244600 0
767 7976 61338100 SRH University of Applied Sciences Heidelberg in Leipzig (Priv. FH) 20252 99999 797U 4 0 CRS3035RES100mN3138200E4488000 0
768 7990 70610000 Norddeutsche Akademie für Finanzen und Steuerrecht Hamburg (Verw-FH) 20171 99999 799Z 2 0 CRS3035RES100mN3383700E4324700 0
769 8000 61420000 Hochschule Merseburg (FH) 20102 99999 800Z 2 1 CRS3035RES100mN3138700E4458500 0
770 8011 61415100 H Magdeburg-Stendal in Magdeburg (FH) 20102 99999 801Y 2 1 CRS3035RES100mN3227000E4435500 0
844 8225 61328500 Duale Hochschule Sachsen - Leipzig (FH) 20251 99999 822U 2 0 CRS3035RES100mN3135800E4481500 0
845 8226 61328600 Duale Hochschule Sachsen - Plauen (FH) 20251 99999 822T 2 0 CRS3035RES100mN3044700E4472800 0
846 8227 61328700 Duale Hochschule Sachsen - Riesa (FH) 20251 99999 822S 2 0 CRS3035RES100mN3139100E4550100 0
847 8230 10435000 German University of Applied Sciences Potsdam (Priv. U) German University of Digital Science (GUDS), Potsdam (Priv. U) 20251 20252 99999 823Z 4 0 CRS3035RES100mN3257800E4533100 0
848 9000 89805000 Sonstige deutsche Hochschulen 20042 99999 900Z 6 0 1
849 9500 89850000 Berufsakademie in Deutschland 20171 99999 950Z 6 0 0
850 9990 99905000 Hochschulen im Ausland 20042 99999 999Z 6 0 1
852 9991 10920020 HIS Test Eigene Hochschule 20042 99999 9991 2 1 1
853 7777 10920030 HIS Test Eigene Hochschule 20042 99999 7777 2 1 1
854 1240 10920040 HIS Test Eigene Hochschule 20042 99999 1240 2 1 1
855 6666 10920050 HIS Test Eigene Hochschule 20042 99999 6666 2 1 1

55
src/de/statspez/plausi/astat/csv/Hochschulstandort.csv

@ -1,14 +1,15 @@
001X;1072520;U Kassel in Witzenhausen;20042;99999;001;06;06636016; 001X;1072520;U Kassel in Witzenhausen;20042;99999;001;06;06636016;
001Y;1072510;U Kassel in Kassel;20042;99999;001;06;06611000; 001Y;1072510;U Kassel in Kassel;20042;99999;001;06;06611000;
002Z;6051500;APOLLON H der Gesundheitswirtschaft Bremen (Priv. FH);20102;99999;002;04;04011000; 002Z;6051500;APOLLON H der Gesundheitswirtschaft Bremen (Priv. FH);20102;99999;002;04;04011000;
003P;6133100; Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Leipzig (Priv. FH) ;20192;99999;A61;14;14713000; 003N;6045500;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Potsdam (Priv. FH);20252;99999;A87;12;12054000;
003Q;6077600;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Frankfurt a. M. (Priv. FH);20212;99999;A72;06;06412000; 003P;6133100; Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Leipzig (Priv. FH) ;20252;99999;A61;14;14713000;
003S;6016610;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Freiburg i. Br. (Priv. FH);20182;99999;A26;08;08311000; 003Q;6077600;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Frankfurt a. M. (Priv. FH);20252;99999;A72;06;06412000;
003T;6016600;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Stuttgart (Priv. FH);20182;99999;A26;08;08111000; 003S;6016610;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Freiburg i. Br. (Priv. FH);20252;99999;A26;08;08311000;
003U;6106200;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Köln (Priv. FH);20182;99999;A27;05;05315000; 003T;6016600;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Stuttgart (Priv. FH);20252;99999;A26;08;08111000;
003V;6067800;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Hamburg (Priv. FH);20182;99999;A28;02;02000000; 003U;6106200;Macromedia University of Applied Sciences Potsdam, Campus Köln (Priv. FH);20252;99999;A27;05;05315000;
003W;6033800;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Berlin (Priv. FH);20182;99999;A29;11;11000000; 003V;6067800;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Hamburg (Priv. FH);20252;99999;A28;02;02000000;
003Z;6026500;Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus München (Priv. FH);20182;99999;003;09;09162000; 003W;6033800;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Berlin (Priv. FH);20252;99999;A29;11;11000000;
003Z;6026500;Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus München (Priv. FH);20252;99999;003;09;09162000;
004Z;6107400;FH der Diakonie Bielefeld-Bethel (Kirchl. FH);20171;99999;004;05;05711000; 004Z;6107400;FH der Diakonie Bielefeld-Bethel (Kirchl. FH);20171;99999;004;05;05711000;
006Y;6082500;Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Schwerin (FH);20222;99999;A25;13;13004000; 006Y;6082500;Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Schwerin (FH);20222;99999;A25;13;13004000;
006Z;6012900;Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Mannheim (FH);20222;99999;006;08;08222000; 006Z;6012900;Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Mannheim (FH);20222;99999;006;08;08222000;
@ -132,7 +133,6 @@
127Z;1014000;U Tübingen;20042;99999;127;08;08416041; 127Z;1014000;U Tübingen;20042;99999;127;08;08416041;
128Z;1015000;Wissenschaftliche H Bierbronnen (Priv. U);20171;99999;128;08;08337118; 128Z;1015000;Wissenschaftliche H Bierbronnen (Priv. U);20171;99999;128;08;08337118;
129X;1111020;Universität Koblenz;20231;99999;129;07;07111000; 129X;1111020;Universität Koblenz;20231;99999;129;07;07111000;
129Y;1111010;Universität Koblenz, Präsidialamt;20231;99999;129;07;07315000;
131K;1022599;U Erlangen-Nürnberg in Erlangen (Klinikum);20042;99999;131;09;09562000; 131K;1022599;U Erlangen-Nürnberg in Erlangen (Klinikum);20042;99999;131;09;09562000;
131X;1022520;U Erlangen-Nürnberg in Nürnberg;20042;99999;131;09;09564000; 131X;1022520;U Erlangen-Nürnberg in Nürnberg;20042;99999;131;09;09564000;
131Y;1022510;U Erlangen-Nürnberg in Erlangen;20042;99999;131;09;09562000; 131Y;1022510;U Erlangen-Nürnberg in Erlangen;20042;99999;131;09;09562000;
@ -186,6 +186,7 @@
163X;1023520;TU München in Weihenstephan;20042;99999;163;09;09178124; 163X;1023520;TU München in Weihenstephan;20042;99999;163;09;09178124;
163Y;1023510;TU München in München;20042;99999;163;09;09162000; 163Y;1023510;TU München in München;20042;99999;163;09;09162000;
163Z;1023500;TU München;20042;99999;163;09;09162000; 163Z;1023500;TU München;20042;99999;163;09;09162000;
168V;6084000;CBS International Business School, Campus Rostock (Priv. FH);20252;99999;A86;13;13003000;
168W;6106520;CBS International Business School, Campus Neuss (Priv. FH);20222;99999;168;05;05162024; 168W;6106520;CBS International Business School, Campus Neuss (Priv. FH);20222;99999;168;05;05162024;
168Y;6115500;CBS International Business School, Campus Mainz (Priv. FH);20201;99999;A52;07;07315000; 168Y;6115500;CBS International Business School, Campus Mainz (Priv. FH);20201;99999;A52;07;07315000;
168Z;6106500;CBS International Business School, Campus Köln (Priv. FH);20201;99999;168;05;05315000; 168Z;6106500;CBS International Business School, Campus Köln (Priv. FH);20201;99999;168;05;05315000;
@ -221,7 +222,7 @@
202Z;4070500;Phil.-Theol. H Frankfurt a.M. (Kirchl.-Theol. H);20171;99999;202;06;06412000; 202Z;4070500;Phil.-Theol. H Frankfurt a.M. (Kirchl.-Theol. H);20171;99999;202;06;06412000;
203Z;4102000;Theol. Fakultät Paderborn (Kirchl.-Theol. H);20171;99999;203;05;05774032; 203Z;4102000;Theol. Fakultät Paderborn (Kirchl.-Theol. H);20171;99999;203;05;05774032;
204Z;4110500;Theol. Fakultät Trier (Kirchl.-Theol. H);20171;99999;204;07;07211000; 204Z;4110500;Theol. Fakultät Trier (Kirchl.-Theol. H);20171;99999;204;07;07211000;
205Z;4111000;Vinzenz Pallotti University Vallendar (Kirchl.-Theol. H);20221;99999;205;07;07137226; 205Z;1114000;Vinzenz Pallotti University gGmbH Vallendar (Kath. U);20252;99999;205;07;07137226;
206Z;4102500;Kölner H für Katholische Theologie (Kirchl.-Theol. H);20211;99999;206;05;05315000; 206Z;4102500;Kölner H für Katholische Theologie (Kirchl.-Theol. H);20211;99999;206;05;05315000;
208Z;4101500;Phil.-Theol. H Münster (Kirchl.-Theol. H);20171;99999;208;05;05515000; 208Z;4101500;Phil.-Theol. H Münster (Kirchl.-Theol. H);20171;99999;208;05;05515000;
210Y;6026710;SRH University of Applied Sciences Heidelberg in München (Priv. FH);20252;99999;210;09;09162000; 210Y;6026710;SRH University of Applied Sciences Heidelberg in München (Priv. FH);20252;99999;210;09;09162000;
@ -238,7 +239,6 @@
230Z;1017500;H für jüdische Studien Heidelberg (Kirchl. U);20171;99999;230;08;08221000; 230Z;1017500;H für jüdische Studien Heidelberg (Kirchl. U);20171;99999;230;08;08221000;
232Z;4071500;Luth.-Theologische H Oberursel (Kirchl.-Theol. H) ;20171;99999;232;06;06434008; 232Z;4071500;Luth.-Theologische H Oberursel (Kirchl.-Theol. H) ;20171;99999;232;06;06434008;
235Z;4140500;Theol. H Friedensau (Kirchl.-Theol. H);20171;99999;235;15;15086140; 235Z;4140500;Theol. H Friedensau (Kirchl.-Theol. H);20171;99999;235;15;15086140;
236Z;6093000;FH für Interkulturelle Theologie Hermannsburg (Priv. FH);20171;99999;236;03;03351026;
241Z;6064200;Northern Business School Hamburg (Priv. FH);20141;99999;241;02;02000000; 241Z;6064200;Northern Business School Hamburg (Priv. FH);20141;99999;241;02;02000000;
242K;1042099;Medizinische Hochschule Brandenburg in Neuruppin (Priv. U) (Klinikum);20231;99999;242;12;12068320; 242K;1042099;Medizinische Hochschule Brandenburg in Neuruppin (Priv. U) (Klinikum);20231;99999;242;12;12068320;
242Z;1042000;Medizinische Hochschule Brandenburg in Neuruppin (Priv. U);20171;99999;242;12;12068320; 242Z;1042000;Medizinische Hochschule Brandenburg in Neuruppin (Priv. U);20171;99999;242;12;12068320;
@ -317,8 +317,9 @@
324Y;6164520;Duale Hochschule Gera-Eisenach in Gera (FH);20162;99999;324;16;16052000; 324Y;6164520;Duale Hochschule Gera-Eisenach in Gera (FH);20162;99999;324;16;16052000;
326Z;6154000;DHSH - Duale Hochschule Schleswig-Holstein, Kiel (Priv. FH);20182;99999;326;01;01002000; 326Z;6154000;DHSH - Duale Hochschule Schleswig-Holstein, Kiel (Priv. FH);20182;99999;326;01;01002000;
327Z;1036500;German International University Berlin (Priv. U);20192;99999;327;11;11000000; 327Z;1036500;German International University Berlin (Priv. U);20192;99999;327;11;11000000;
329Y;1162500;HMU Health and Medical University Erfurt in Erfurt (Priv. U);20231;99999;A81;16;16051000; 329W;1107200;HMU Health and Medical University Potsdam in Düsseldof (Priv. U);20252;99999;A85;05;05111000;
329Z;1043000;HMU Health and Medical University Erfurt in Potsdam (Priv. U);20231;99999;329;12;12054000; 329Y;1162500;HMU Health and Medical University Erfurt in Erfurt (Priv. U);20231;20261;A81;16;16051000;
329Z;1043000;HMU Health and Medical University Potsdam in Potsdam (Priv. U);20252;99999;329;12;12054000;
336Z;6034500;Digital Business University Berlin (Priv. FH);20192;99999;336;11;11000000; 336Z;6034500;Digital Business University Berlin (Priv. FH);20192;99999;336;11;11000000;
337Z;1022700;Technische Universität Nürnberg;20211;99999;337;09;09564000; 337Z;1022700;Technische Universität Nürnberg;20211;99999;337;09;09564000;
343Z;6060800;Berufliche Hochschule Hamburg (FH);20212;99999;343;02;02000000; 343Z;6060800;Berufliche Hochschule Hamburg (FH);20212;99999;343;02;02000000;
@ -348,7 +349,7 @@
403Z;B070510;Akademie für Tonkunst Darmstadt;20172;99999;403;06;06411000; 403Z;B070510;Akademie für Tonkunst Darmstadt;20172;99999;403;06;06411000;
404Z;B071010;Berufsakademie Rhein-Main Rödermark (Private BA);20172;99999;404;06;06438012; 404Z;B071010;Berufsakademie Rhein-Main Rödermark (Private BA);20172;99999;404;06;06438012;
405Z;B071510;Brüder-Grimm-Berufsakademie Hanau (Private BA);20172;99999;405;06;06435014; 405Z;B071510;Brüder-Grimm-Berufsakademie Hanau (Private BA);20172;99999;405;06;06435014;
406Z;B072010;Dr. Hoch's Konservatorium - Musikakademie Frankfurt am Main;20172;99999;406;06;06412000; 406Z;B072010;Dr. Hoch's Konservatorium - Musikakademie Frankfurt am Main (Priv.);20252;99999;406;06;06412000;
407Z;B072510;Europäische Studienakademie Kälte-Klima-Lüftung (ESaK) Maintal (Private BA);20172;99999;407;06;06435019; 407Z;B072510;Europäische Studienakademie Kälte-Klima-Lüftung (ESaK) Maintal (Private BA);20172;99999;407;06;06435019;
408X;B073015;Hessische Berufsakademie Frankfurt, Studienort Kassel (Private BA);20172;99999;408;06;06611000; 408X;B073015;Hessische Berufsakademie Frankfurt, Studienort Kassel (Private BA);20172;99999;408;06;06611000;
408Y;B073010;Hessische Berufsakademie Frankfurt, Studienort Frankfurt (Private BA);20172;99999;408;06;06412000; 408Y;B073010;Hessische Berufsakademie Frankfurt, Studienort Frankfurt (Private BA);20172;99999;408;06;06412000;
@ -381,6 +382,7 @@
426Z;B071800;Deutsche Berufsakademie Sport und Gesundheit (dba) in Baunatal (Private BA);20172;99999;426;06;06633003; 426Z;B071800;Deutsche Berufsakademie Sport und Gesundheit (dba) in Baunatal (Private BA);20172;99999;426;06;06633003;
427Z;B094510;Berufsakademie Wilhelmshaven (Private BA);20192;99999;427;03;03405000; 427Z;B094510;Berufsakademie Wilhelmshaven (Private BA);20192;99999;427;03;03405000;
428Z;B123010;Berufsakademie Heimerer GmbH, Quierschied (Private BA);20202;99999;428;10;10041516; 428Z;B123010;Berufsakademie Heimerer GmbH, Quierschied (Private BA);20202;99999;428;10;10041516;
474Z;6029800;Promotionszentrum Integrierte Mobilität - München;20252;99999;474;09;09162000;
475Z;6028100;Promotionszentrum Advanced Building Technologies, TH Rosenheim;20242;99999;475;09;09163000; 475Z;6028100;Promotionszentrum Advanced Building Technologies, TH Rosenheim;20242;99999;475;09;09163000;
476Z;6028000;Promotionszentrum NITRO, TH Augsburg;20242;99999;476;09;09761000; 476Z;6028000;Promotionszentrum NITRO, TH Augsburg;20242;99999;476;09;09761000;
477Z;6029700;Promotionszentrum Transformation und nachhaltige Entwicklung, HaW Kempten;20242;99999;477;09;09763000; 477Z;6029700;Promotionszentrum Transformation und nachhaltige Entwicklung, HaW Kempten;20242;99999;477;09;09763000;
@ -400,16 +402,15 @@
491Z;6029400;Promotionszentrum Angewandte Informatik, Regensburg;20232;99999;491;09;09362000; 491Z;6029400;Promotionszentrum Angewandte Informatik, Regensburg;20232;99999;491;09;09362000;
492Z;6029500;Promotionszentrum Materialien und Produktionstechnik, Nürnberg;20232;99999;492;09;09564000; 492Z;6029500;Promotionszentrum Materialien und Produktionstechnik, Nürnberg;20232;99999;492;09;09564000;
493Z;6029600;Promotionszentrum CARRI, München;20232;99999;493;09;09162000; 493Z;6029600;Promotionszentrum CARRI, München;20232;99999;493;09;09162000;
494Z;6043800;GU- Deutsche Hochschule für angewandte Wissenschaften, Potsdam (Priv. FH);20231;99999;494;12;12054000; 494Z;6043800;Deutsche Hochschule für angewandte Wissenschaften (DHAW), Potsdam (Priv. FH);20252;99999;494;12;12054000;
495Z;6104600;INU - Innovative University of Applied Sciences, Köln (Priv. FH);20241;99999;495;05;05315000; 495Z;6104600;INU - Innovative University of Applied Sciences, Köln (Priv. FH);20241;99999;495;05;05315000;
496Z;6018500;media Akademie - Hochschule Stuttgart (Priv. FH);20161;99999;496;08;08111000;
498W;6092010;Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Elsfleth (FH);20102;99999;498;03;03461004; 498W;6092010;Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Elsfleth (FH);20102;99999;498;03;03461004;
498X;6092020;Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Oldenburg (FH);20102;99999;498;03;03403000; 498X;6092020;Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Oldenburg (FH);20102;99999;498;03;03403000;
498Y;6092030;Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Wilhelmshaven (FH);20102;99999;498;03;03405000; 498Y;6092030;Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Wilhelmshaven (FH);20102;99999;498;03;03405000;
499X;6090710;Hochschule Emden/Leer in Emden (FH);20102;99999;499;03;03402000; 499X;6090710;Hochschule Emden/Leer in Emden (FH);20102;99999;499;03;03402000;
499Y;6090720;Hochschule Emden/Leer in Leer (FH);20102;99999;499;03;03457013; 499Y;6090720;Hochschule Emden/Leer in Leer (FH);20102;99999;499;03;03457013;
501Z;6150500;Hochschule Flensburg (FH);20162;99999;501;01;01001000; 501Z;6150500;Hochschule Flensburg (FH);20162;99999;501;01;01001000;
502Z;6151500;FH Kiel;20042;99999;502;01;01002000; 502Z;6151500;H für Angewandte Wissenschaften Kiel (FH);20252;99999;502;01;01002000;
503Z;6152000;Technische Hochschule Lübeck (FH);20182;99999;503;01;01003000; 503Z;6152000;Technische Hochschule Lübeck (FH);20182;99999;503;01;01003000;
505Z;6153500;FH Wedel (Priv. FH);20171;99999;505;01;01056050; 505Z;6153500;FH Wedel (Priv. FH);20171;99999;505;01;01056050;
506X;7150520;FH für Verwaltung und Dienstleistung Altenholz in Reinfeld (Verw-FH);20171;99999;506;01;01062061; 506X;7150520;FH für Verwaltung und Dienstleistung Altenholz in Reinfeld (Verw-FH);20171;99999;506;01;01062061;
@ -468,9 +469,9 @@
569X;6016800;International School of Management Dortmund in Stuttgart (Priv. FH);20181;99999;A57;08;08111000; 569X;6016800;International School of Management Dortmund in Stuttgart (Priv. FH);20181;99999;A57;08;08111000;
569Y;6027900;International School of Management Dortmund in München (Priv. FH);20182;99999;A56;09;09162000; 569Y;6027900;International School of Management Dortmund in München (Priv. FH);20182;99999;A56;09;09162000;
569Z;6105410;International School of Management Dortmund in Dortmund (Priv. FH);20182;99999;569;05;05913000; 569Z;6105410;International School of Management Dortmund in Dortmund (Priv. FH);20182;99999;569;05;05913000;
570W;6102130;Westfälische H in Gelsenkirchen/Bocholt/Recklinghausen (FH) in Recklinghausen;20211;99999;570;05;05562032; 570W;6102130;Westfälische H (FH) in Recklinghausen;20252;99999;570;05;05562032;
570X;6102120;Westfälische H in Gelsenkirchen/Bocholt/Recklinghausen (FH) in Gelsenkirchen;20211;99999;570;05;05513000; 570X;6102120;Westfälische H (FH) in Gelsenkirchen;20252;99999;570;05;05513000;
570Y;6102110;Westfälische H in Gelsenkirchen/Bocholt/Recklinghausen (FH) in Bocholt;20211;99999;570;05;05554008; 570Y;6102110;Westfälische H (FH) in Bocholt;20252;99999;570;05;05554008;
571X;6100320;FH Aachen in Jülich;20042;99999;571;05;05358024; 571X;6100320;FH Aachen in Jülich;20042;99999;571;05;05358024;
571Y;6100310;FH Aachen in Aachen;20112;99999;571;05;05334002; 571Y;6100310;FH Aachen in Aachen;20112;99999;571;05;05334002;
572E;6154500;IU Internationale Hochschule Erfurt in Lübeck (Priv. FH);20221;99999;A75;01;01003000; 572E;6154500;IU Internationale Hochschule Erfurt in Lübeck (Priv. FH);20221;99999;A75;01;01003000;
@ -497,8 +498,8 @@
573W;6100630;Hochschule Bielefeld in Gütersloh (FH);20231;99999;573;05;05754008; 573W;6100630;Hochschule Bielefeld in Gütersloh (FH);20231;99999;573;05;05754008;
573X;6100620;Hochschule Bielefeld in Minden (FH);20231;99999;573;05;05770024; 573X;6100620;Hochschule Bielefeld in Minden (FH);20231;99999;573;05;05770024;
573Y;6100610;Hochschule Bielefeld in Bielefeld (FH);20231;99999;573;05;05711000; 573Y;6100610;Hochschule Bielefeld in Bielefeld (FH);20231;99999;573;05;05711000;
575X;6100920;Hochschule Bochum (FH) in Velbert/Heiligenhaus;20162;99999;575;05;05158012; 575X;6100920;Hochschule für Technik, Wirtschaft und Gesundheit Bochum (FH) in Velbert/Heiligenhaus;20251;99999;575;05;05158012;
575Y;6100910;Hochschule Bochum (FH) in Bochum;20162;99999;575;05;05911000; 575Y;6100910;Hochschule für Technik, Wirtschaft und Gesundheit Bochum (FH) in Bochum;20251;99999;575;05;05911000;
577Z;6101500;FH Dortmund;20042;99999;577;05;05913000; 577Z;6101500;FH Dortmund;20042;99999;577;05;05913000;
578Z;6101800;H Düsseldorf (FH);20202;99999;578;05;05111000; 578Z;6101800;H Düsseldorf (FH);20202;99999;578;05;05111000;
580W;6043700;University of Europe for Applied Sciences Potsdam in Potsdam (Priv. FH) ;20202;99999;A67;12;12054000; 580W;6043700;University of Europe for Applied Sciences Potsdam in Potsdam (Priv. FH) ;20202;99999;A67;12;12054000;
@ -509,7 +510,6 @@
582S;6025800;FH des Mittelstandes (FHM) in Bamberg (Priv. FH) ;20171;99999;A48;09;09461000; 582S;6025800;FH des Mittelstandes (FHM) in Bamberg (Priv. FH) ;20171;99999;A48;09;09461000;
582T;6094400;FH des Mittelstandes (FHM) in Hannover (Priv. FH);20171;99999;A23;03;03241001; 582T;6094400;FH des Mittelstandes (FHM) in Hannover (Priv. FH);20171;99999;A23;03;03241001;
582U;6083010;FH des Mittelstandes (FHM) in Rostock (Priv. FH);20171;99999;A24;13;13003000; 582U;6083010;FH des Mittelstandes (FHM) in Rostock (Priv. FH);20171;99999;A24;13;13003000;
582V;6083020;FH des Mittelstandes (FHM) in Schwerin (Priv. FH);20171;99999;A24;13;13004000;
582W;6104220;FH des Mittelstandes (FHM) in Köln (Priv. FH);20101;99999;582;05;05315000; 582W;6104220;FH des Mittelstandes (FHM) in Köln (Priv. FH);20101;99999;582;05;05315000;
582X;6104230;FH des Mittelstandes (FHM) in Frechen (Priv. FH);20201;99999;582;05;05362024; 582X;6104230;FH des Mittelstandes (FHM) in Frechen (Priv. FH);20201;99999;582;05;05362024;
582Z;6104210;FH des Mittelstandes (FHM) in Bielefeld (Priv. FH);20101;99999;582;05;05711000; 582Z;6104210;FH des Mittelstandes (FHM) in Bielefeld (Priv. FH);20101;99999;582;05;05711000;
@ -542,7 +542,7 @@
607W;7101530;Hochschule für Polizei und öffentliche Verwaltung NW in Gelsenkirchen (Verw-FH);20192;99999;607;05;05513000; 607W;7101530;Hochschule für Polizei und öffentliche Verwaltung NW in Gelsenkirchen (Verw-FH);20192;99999;607;05;05513000;
607X;7101520;Hochschule für Polizei und öffentliche Verwaltung NW in Duisburg (Verw-FH);20192;99999;607;05;05112000; 607X;7101520;Hochschule für Polizei und öffentliche Verwaltung NW in Duisburg (Verw-FH);20192;99999;607;05;05112000;
607Y;7101510;Hochschule für Polizei und öffentliche Verwaltung NW in Bielefeld (Verw-FH);20192;99999;607;05;05711000; 607Y;7101510;Hochschule für Polizei und öffentliche Verwaltung NW in Bielefeld (Verw-FH);20192;99999;607;05;05711000;
618Z;7100500;FH für Rechtspflege NW in Bad Münstereifel (Verw-FH);20171;99999;618;05;05366004; 618Z;7100500;H der Justiz NW in Bad Münstereifel (Verw-FH);20252;99999;618;05;05366004;
619Z;7101000;Hochschule für Finanzen Nordrhein-Westfalen in Nordkirchen (Verw-FH);20201;99999;619;05;05558028; 619Z;7101000;Hochschule für Finanzen Nordrhein-Westfalen in Nordkirchen (Verw-FH);20201;99999;619;05;05558028;
620P;7072030;Hochschule des Bundes für öffentliche Verwaltung, Kassel;20171;99999;A08;06;06611000; 620P;7072030;Hochschule des Bundes für öffentliche Verwaltung, Kassel;20171;99999;A08;06;06611000;
620Q;7151000;Hochschule des Bundes für öffentliche Verwaltung, Lübeck;20171;99999;A09;01;01003000; 620Q;7151000;Hochschule des Bundes für öffentliche Verwaltung, Lübeck;20171;99999;A09;01;01003000;
@ -601,7 +601,7 @@
658X;6113020;Hochschule Trier (FH) in Idar-Oberstein;20131;99999;658;07;07134045; 658X;6113020;Hochschule Trier (FH) in Idar-Oberstein;20131;99999;658;07;07134045;
658Y;6113010;Hochschule Trier (FH) in Birkenfeld;20131;99999;658;07;07134010; 658Y;6113010;Hochschule Trier (FH) in Birkenfeld;20131;99999;658;07;07134010;
660Z;6114500;Katholische Hochschule Mainz (Kirchl. FH);20171;99999;660;07;07315000; 660Z;6114500;Katholische Hochschule Mainz (Kirchl. FH);20171;99999;660;07;07315000;
662Z;7111000;Hochschule der Deutschen Bundesbank Hachenburg (Priv. Verw-FH);20242;99999;662;07;07143229; 662Z;7111000;Hochschule der Deutschen Bundesbank Hachenburg (Verw-FH);20171;99999;662;07;07143229;
663X;7111520;Hochschule für öffentliche Verwaltung Rheinland-Pfalz (HöV) Mayen, FB Innere Verwaltung in Mayen;20151;99999;663;07;07137068; 663X;7111520;Hochschule für öffentliche Verwaltung Rheinland-Pfalz (HöV) Mayen, FB Innere Verwaltung in Mayen;20151;99999;663;07;07137068;
664Z;7110500;Hochschule für Finanzen Rheinland-Pfalz (HFin) in Edenkoben (Verw-FH);20172;99999;664;07;07337020; 664Z;7110500;Hochschule für Finanzen Rheinland-Pfalz (HFin) in Edenkoben (Verw-FH);20172;99999;664;07;07337020;
665Z;6112000;Hochschule für Wirtschaft und Gesellschaft Ludwigshafen (FH);20191;99999;665;07;07314000; 665Z;6112000;Hochschule für Wirtschaft und Gesellschaft Ludwigshafen (FH);20191;99999;665;07;07314000;
@ -723,6 +723,7 @@
795Z;6042000;FH Potsdam;20042;99999;795;12;12054000; 795Z;6042000;FH Potsdam;20042;99999;795;12;12054000;
796Y;6143000;Steinbeis Hochschule in Magdeburg (Priv. FH);20222;99999;A80;15;15003000; 796Y;6143000;Steinbeis Hochschule in Magdeburg (Priv. FH);20222;99999;A80;15;15003000;
796Z;1034000;Steinbeis Hochschule in Berlin (Priv. U);20222;99999;796;11;11000000; 796Z;1034000;Steinbeis Hochschule in Berlin (Priv. U);20222;99999;796;11;11000000;
797U;6133810;SRH University of Applied Sciences Heidelberg in Leipzig (Priv. FH);20252;99999;A39;14;14713000;
797V;6053000;SRH University of Applied Sciences Heidelberg in Bremen (Priv. FH);20241;99999;A84;04;04011000; 797V;6053000;SRH University of Applied Sciences Heidelberg in Bremen (Priv. FH);20241;99999;A84;04;04011000;
797W;6154200;SRH University of Applied Sciences Heidelberg in Heide (Priv. FH);20242;99999;A83;01;01051044; 797W;6154200;SRH University of Applied Sciences Heidelberg in Heide (Priv. FH);20242;99999;A83;01;01051044;
797X;6066700;SRH University of Applied Sciences Heidelberg in Hamburg (Priv. FH) ;20242;99999;A68;02;02000000; 797X;6066700;SRH University of Applied Sciences Heidelberg in Hamburg (Priv. FH) ;20242;99999;A68;02;02000000;
@ -805,7 +806,7 @@
822W;6132830;Duale Hochschule Sachsen - Dresden (FH);20251;99999;822;14;14612000; 822W;6132830;Duale Hochschule Sachsen - Dresden (FH);20251;99999;822;14;14612000;
822X;6132820;Duale Hochschule Sachsen - Breitenbrunn (FH);20251;99999;822;14;14521110; 822X;6132820;Duale Hochschule Sachsen - Breitenbrunn (FH);20251;99999;822;14;14521110;
822Y;6132810;Duale Hochschule Sachsen - Bautzen (FH);20251;99999;822;14;14625020; 822Y;6132810;Duale Hochschule Sachsen - Bautzen (FH);20251;99999;822;14;14625020;
823Z;1043500;German University of Applied Sciences Potsdam (Priv. U);20251;99999;823;12;12054000; 823Z;1043500;German University of Digital Science (GUDS), Potsdam (Priv. U);20252;99999;823;12;12054000;
900Z;8980500;Sonstige deutsche Hochschulen;20042;99999;900;98;00000000; 900Z;8980500;Sonstige deutsche Hochschulen;20042;99999;900;98;00000000;
950Z;8985000;Berufsakademie in Deutschland;20171;99999;950;98;00000000; 950Z;8985000;Berufsakademie in Deutschland;20171;99999;950;98;00000000;
999Z;9990500;Hochschulen im Ausland;20042;99999;999;99;00000000; 999Z;9990500;Hochschulen im Ausland;20042;99999;999;99;00000000;
@ -813,4 +814,4 @@
9991;1092000;HIS Test Eigene Hochschule;20042;99999;999;03;03241001; 9991;1092000;HIS Test Eigene Hochschule;20042;99999;999;03;03241001;
7777;1092000;HIS Test Eigene Hochschule;20042;99999;999;03;03241001; 7777;1092000;HIS Test Eigene Hochschule;20042;99999;999;03;03241001;
1240;1092000;HIS Test Eigene Hochschule;20042;99999;999;03;03241001; 1240;1092000;HIS Test Eigene Hochschule;20042;99999;999;03;03241001;
6666;1092000;HIS Test Eigene Hochschule;20042;99999;999;03;03241001; 6666;1092000;HIS Test Eigene Hochschule;20042;99999;999;03;03241001;

1 001X 1072520 U Kassel in Witzenhausen 20042 99999 001 06 06636016
2 001Y 1072510 U Kassel in Kassel 20042 99999 001 06 06611000
3 002Z 6051500 APOLLON H der Gesundheitswirtschaft Bremen (Priv. FH) 20102 99999 002 04 04011000
4 003P 003N 6133100 6045500 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Leipzig (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Potsdam (Priv. FH) 20192 20252 99999 A61 A87 14 12 14713000 12054000
5 003Q 003P 6077600 6133100 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Frankfurt a. M. (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Leipzig (Priv. FH) 20212 20252 99999 A72 A61 06 14 06412000 14713000
6 003S 003Q 6016610 6077600 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Freiburg i. Br. (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Frankfurt a. M. (Priv. FH) 20182 20252 99999 A26 A72 08 06 08311000 06412000
7 003T 003S 6016600 6016610 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Stuttgart (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Freiburg i. Br. (Priv. FH) 20182 20252 99999 A26 08 08111000 08311000
8 003U 003T 6106200 6016600 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Köln (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Stuttgart (Priv. FH) 20182 20252 99999 A27 A26 05 08 05315000 08111000
9 003V 003U 6067800 6106200 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Hamburg (Priv. FH) Macromedia University of Applied Sciences Potsdam, Campus Köln (Priv. FH) 20182 20252 99999 A28 A27 02 05 02000000 05315000
10 003W 003V 6033800 6067800 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus Berlin (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Hamburg (Priv. FH) 20182 20252 99999 A29 A28 11 02 11000000 02000000
11 003Z 003W 6026500 6033800 Hochschule Macromedia für angewandte Wissenschaften Stuttgart, Campus München (Priv. FH) Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus Berlin (Priv. FH) 20182 20252 99999 003 A29 09 11 09162000 11000000
12 003Z 6026500 Hochschule Macromedia für angewandte Wissenschaften Potsdam, Campus München (Priv. FH) 20252 99999 003 09 09162000
13 004Z 6107400 FH der Diakonie Bielefeld-Bethel (Kirchl. FH) 20171 99999 004 05 05711000
14 006Y 6082500 Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Schwerin (FH) 20222 99999 A25 13 13004000
15 006Z 6012900 Hochschule für angewandte Wissenschaften der Bundesagentur für Arbeit in Mannheim (FH) 20222 99999 006 08 08222000
133 127Z 1014000 U Tübingen 20042 99999 127 08 08416041
134 128Z 1015000 Wissenschaftliche H Bierbronnen (Priv. U) 20171 99999 128 08 08337118
135 129X 1111020 Universität Koblenz 20231 99999 129 07 07111000
129Y 1111010 Universität Koblenz, Präsidialamt 20231 99999 129 07 07315000
136 131K 1022599 U Erlangen-Nürnberg in Erlangen (Klinikum) 20042 99999 131 09 09562000
137 131X 1022520 U Erlangen-Nürnberg in Nürnberg 20042 99999 131 09 09564000
138 131Y 1022510 U Erlangen-Nürnberg in Erlangen 20042 99999 131 09 09562000
186 163X 1023520 TU München in Weihenstephan 20042 99999 163 09 09178124
187 163Y 1023510 TU München in München 20042 99999 163 09 09162000
188 163Z 1023500 TU München 20042 99999 163 09 09162000
189 168V 6084000 CBS International Business School, Campus Rostock (Priv. FH) 20252 99999 A86 13 13003000
190 168W 6106520 CBS International Business School, Campus Neuss (Priv. FH) 20222 99999 168 05 05162024
191 168Y 6115500 CBS International Business School, Campus Mainz (Priv. FH) 20201 99999 A52 07 07315000
192 168Z 6106500 CBS International Business School, Campus Köln (Priv. FH) 20201 99999 168 05 05315000
222 202Z 4070500 Phil.-Theol. H Frankfurt a.M. (Kirchl.-Theol. H) 20171 99999 202 06 06412000
223 203Z 4102000 Theol. Fakultät Paderborn (Kirchl.-Theol. H) 20171 99999 203 05 05774032
224 204Z 4110500 Theol. Fakultät Trier (Kirchl.-Theol. H) 20171 99999 204 07 07211000
225 205Z 4111000 1114000 Vinzenz Pallotti University Vallendar (Kirchl.-Theol. H) Vinzenz Pallotti University gGmbH Vallendar (Kath. U) 20221 20252 99999 205 07 07137226
226 206Z 4102500 Kölner H für Katholische Theologie (Kirchl.-Theol. H) 20211 99999 206 05 05315000
227 208Z 4101500 Phil.-Theol. H Münster (Kirchl.-Theol. H) 20171 99999 208 05 05515000
228 210Y 6026710 SRH University of Applied Sciences Heidelberg in München (Priv. FH) 20252 99999 210 09 09162000
239 230Z 1017500 H für jüdische Studien Heidelberg (Kirchl. U) 20171 99999 230 08 08221000
240 232Z 4071500 Luth.-Theologische H Oberursel (Kirchl.-Theol. H) 20171 99999 232 06 06434008
241 235Z 4140500 Theol. H Friedensau (Kirchl.-Theol. H) 20171 99999 235 15 15086140
236Z 6093000 FH für Interkulturelle Theologie Hermannsburg (Priv. FH) 20171 99999 236 03 03351026
242 241Z 6064200 Northern Business School Hamburg (Priv. FH) 20141 99999 241 02 02000000
243 242K 1042099 Medizinische Hochschule Brandenburg in Neuruppin (Priv. U) (Klinikum) 20231 99999 242 12 12068320
244 242Z 1042000 Medizinische Hochschule Brandenburg in Neuruppin (Priv. U) 20171 99999 242 12 12068320
317 324Y 6164520 Duale Hochschule Gera-Eisenach in Gera (FH) 20162 99999 324 16 16052000
318 326Z 6154000 DHSH - Duale Hochschule Schleswig-Holstein, Kiel (Priv. FH) 20182 99999 326 01 01002000
319 327Z 1036500 German International University Berlin (Priv. U) 20192 99999 327 11 11000000
320 329Y 329W 1162500 1107200 HMU Health and Medical University Erfurt in Erfurt (Priv. U) HMU Health and Medical University Potsdam in Düsseldof (Priv. U) 20231 20252 99999 A81 A85 16 05 16051000 05111000
321 329Z 329Y 1043000 1162500 HMU Health and Medical University Erfurt in Potsdam (Priv. U) HMU Health and Medical University Erfurt in Erfurt (Priv. U) 20231 99999 20261 329 A81 12 16 12054000 16051000
322 329Z 1043000 HMU Health and Medical University Potsdam in Potsdam (Priv. U) 20252 99999 329 12 12054000
323 336Z 6034500 Digital Business University Berlin (Priv. FH) 20192 99999 336 11 11000000
324 337Z 1022700 Technische Universität Nürnberg 20211 99999 337 09 09564000
325 343Z 6060800 Berufliche Hochschule Hamburg (FH) 20212 99999 343 02 02000000
349 403Z B070510 Akademie für Tonkunst Darmstadt 20172 99999 403 06 06411000
350 404Z B071010 Berufsakademie Rhein-Main Rödermark (Private BA) 20172 99999 404 06 06438012
351 405Z B071510 Brüder-Grimm-Berufsakademie Hanau (Private BA) 20172 99999 405 06 06435014
352 406Z B072010 Dr. Hoch's Konservatorium - Musikakademie Frankfurt am Main Dr. Hoch's Konservatorium - Musikakademie Frankfurt am Main (Priv.) 20172 20252 99999 406 06 06412000
353 407Z B072510 Europäische Studienakademie Kälte-Klima-Lüftung (ESaK) Maintal (Private BA) 20172 99999 407 06 06435019
354 408X B073015 Hessische Berufsakademie Frankfurt, Studienort Kassel (Private BA) 20172 99999 408 06 06611000
355 408Y B073010 Hessische Berufsakademie Frankfurt, Studienort Frankfurt (Private BA) 20172 99999 408 06 06412000
382 426Z B071800 Deutsche Berufsakademie Sport und Gesundheit (dba) in Baunatal (Private BA) 20172 99999 426 06 06633003
383 427Z B094510 Berufsakademie Wilhelmshaven (Private BA) 20192 99999 427 03 03405000
384 428Z B123010 Berufsakademie Heimerer GmbH, Quierschied (Private BA) 20202 99999 428 10 10041516
385 474Z 6029800 Promotionszentrum Integrierte Mobilität - München 20252 99999 474 09 09162000
386 475Z 6028100 Promotionszentrum Advanced Building Technologies, TH Rosenheim 20242 99999 475 09 09163000
387 476Z 6028000 Promotionszentrum NITRO, TH Augsburg 20242 99999 476 09 09761000
388 477Z 6029700 Promotionszentrum Transformation und nachhaltige Entwicklung, HaW Kempten 20242 99999 477 09 09763000
402 491Z 6029400 Promotionszentrum Angewandte Informatik, Regensburg 20232 99999 491 09 09362000
403 492Z 6029500 Promotionszentrum Materialien und Produktionstechnik, Nürnberg 20232 99999 492 09 09564000
404 493Z 6029600 Promotionszentrum CARRI, München 20232 99999 493 09 09162000
405 494Z 6043800 GU- Deutsche Hochschule für angewandte Wissenschaften, Potsdam (Priv. FH) Deutsche Hochschule für angewandte Wissenschaften (DHAW), Potsdam (Priv. FH) 20231 20252 99999 494 12 12054000
406 495Z 6104600 INU - Innovative University of Applied Sciences, Köln (Priv. FH) 20241 99999 495 05 05315000
496Z 6018500 media Akademie - Hochschule Stuttgart (Priv. FH) 20161 99999 496 08 08111000
407 498W 6092010 Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Elsfleth (FH) 20102 99999 498 03 03461004
408 498X 6092020 Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Oldenburg (FH) 20102 99999 498 03 03403000
409 498Y 6092030 Hochschule Wilhelmshaven/Oldenburg/Elsfleth in Wilhelmshaven (FH) 20102 99999 498 03 03405000
410 499X 6090710 Hochschule Emden/Leer in Emden (FH) 20102 99999 499 03 03402000
411 499Y 6090720 Hochschule Emden/Leer in Leer (FH) 20102 99999 499 03 03457013
412 501Z 6150500 Hochschule Flensburg (FH) 20162 99999 501 01 01001000
413 502Z 6151500 FH Kiel H für Angewandte Wissenschaften Kiel (FH) 20042 20252 99999 502 01 01002000
414 503Z 6152000 Technische Hochschule Lübeck (FH) 20182 99999 503 01 01003000
415 505Z 6153500 FH Wedel (Priv. FH) 20171 99999 505 01 01056050
416 506X 7150520 FH für Verwaltung und Dienstleistung Altenholz in Reinfeld (Verw-FH) 20171 99999 506 01 01062061
469 569X 6016800 International School of Management Dortmund in Stuttgart (Priv. FH) 20181 99999 A57 08 08111000
470 569Y 6027900 International School of Management Dortmund in München (Priv. FH) 20182 99999 A56 09 09162000
471 569Z 6105410 International School of Management Dortmund in Dortmund (Priv. FH) 20182 99999 569 05 05913000
472 570W 6102130 Westfälische H in Gelsenkirchen/Bocholt/Recklinghausen (FH) in Recklinghausen Westfälische H (FH) in Recklinghausen 20211 20252 99999 570 05 05562032
473 570X 6102120 Westfälische H in Gelsenkirchen/Bocholt/Recklinghausen (FH) in Gelsenkirchen Westfälische H (FH) in Gelsenkirchen 20211 20252 99999 570 05 05513000
474 570Y 6102110 Westfälische H in Gelsenkirchen/Bocholt/Recklinghausen (FH) in Bocholt Westfälische H (FH) in Bocholt 20211 20252 99999 570 05 05554008
475 571X 6100320 FH Aachen in Jülich 20042 99999 571 05 05358024
476 571Y 6100310 FH Aachen in Aachen 20112 99999 571 05 05334002
477 572E 6154500 IU Internationale Hochschule Erfurt in Lübeck (Priv. FH) 20221 99999 A75 01 01003000
498 573W 6100630 Hochschule Bielefeld in Gütersloh (FH) 20231 99999 573 05 05754008
499 573X 6100620 Hochschule Bielefeld in Minden (FH) 20231 99999 573 05 05770024
500 573Y 6100610 Hochschule Bielefeld in Bielefeld (FH) 20231 99999 573 05 05711000
501 575X 6100920 Hochschule Bochum (FH) in Velbert/Heiligenhaus Hochschule für Technik, Wirtschaft und Gesundheit Bochum (FH) in Velbert/Heiligenhaus 20162 20251 99999 575 05 05158012
502 575Y 6100910 Hochschule Bochum (FH) in Bochum Hochschule für Technik, Wirtschaft und Gesundheit Bochum (FH) in Bochum 20162 20251 99999 575 05 05911000
503 577Z 6101500 FH Dortmund 20042 99999 577 05 05913000
504 578Z 6101800 H Düsseldorf (FH) 20202 99999 578 05 05111000
505 580W 6043700 University of Europe for Applied Sciences Potsdam in Potsdam (Priv. FH) 20202 99999 A67 12 12054000
510 582S 6025800 FH des Mittelstandes (FHM) in Bamberg (Priv. FH) 20171 99999 A48 09 09461000
511 582T 6094400 FH des Mittelstandes (FHM) in Hannover (Priv. FH) 20171 99999 A23 03 03241001
512 582U 6083010 FH des Mittelstandes (FHM) in Rostock (Priv. FH) 20171 99999 A24 13 13003000
582V 6083020 FH des Mittelstandes (FHM) in Schwerin (Priv. FH) 20171 99999 A24 13 13004000
513 582W 6104220 FH des Mittelstandes (FHM) in Köln (Priv. FH) 20101 99999 582 05 05315000
514 582X 6104230 FH des Mittelstandes (FHM) in Frechen (Priv. FH) 20201 99999 582 05 05362024
515 582Z 6104210 FH des Mittelstandes (FHM) in Bielefeld (Priv. FH) 20101 99999 582 05 05711000
542 607W 7101530 Hochschule für Polizei und öffentliche Verwaltung NW in Gelsenkirchen (Verw-FH) 20192 99999 607 05 05513000
543 607X 7101520 Hochschule für Polizei und öffentliche Verwaltung NW in Duisburg (Verw-FH) 20192 99999 607 05 05112000
544 607Y 7101510 Hochschule für Polizei und öffentliche Verwaltung NW in Bielefeld (Verw-FH) 20192 99999 607 05 05711000
545 618Z 7100500 FH für Rechtspflege NW in Bad Münstereifel (Verw-FH) H der Justiz NW in Bad Münstereifel (Verw-FH) 20171 20252 99999 618 05 05366004
546 619Z 7101000 Hochschule für Finanzen Nordrhein-Westfalen in Nordkirchen (Verw-FH) 20201 99999 619 05 05558028
547 620P 7072030 Hochschule des Bundes für öffentliche Verwaltung, Kassel 20171 99999 A08 06 06611000
548 620Q 7151000 Hochschule des Bundes für öffentliche Verwaltung, Lübeck 20171 99999 A09 01 01003000
601 658X 6113020 Hochschule Trier (FH) in Idar-Oberstein 20131 99999 658 07 07134045
602 658Y 6113010 Hochschule Trier (FH) in Birkenfeld 20131 99999 658 07 07134010
603 660Z 6114500 Katholische Hochschule Mainz (Kirchl. FH) 20171 99999 660 07 07315000
604 662Z 7111000 Hochschule der Deutschen Bundesbank Hachenburg (Priv. Verw-FH) Hochschule der Deutschen Bundesbank Hachenburg (Verw-FH) 20242 20171 99999 662 07 07143229
605 663X 7111520 Hochschule für öffentliche Verwaltung Rheinland-Pfalz (HöV) Mayen, FB Innere Verwaltung in Mayen 20151 99999 663 07 07137068
606 664Z 7110500 Hochschule für Finanzen Rheinland-Pfalz (HFin) in Edenkoben (Verw-FH) 20172 99999 664 07 07337020
607 665Z 6112000 Hochschule für Wirtschaft und Gesellschaft Ludwigshafen (FH) 20191 99999 665 07 07314000
723 795Z 6042000 FH Potsdam 20042 99999 795 12 12054000
724 796Y 6143000 Steinbeis Hochschule in Magdeburg (Priv. FH) 20222 99999 A80 15 15003000
725 796Z 1034000 Steinbeis Hochschule in Berlin (Priv. U) 20222 99999 796 11 11000000
726 797U 6133810 SRH University of Applied Sciences Heidelberg in Leipzig (Priv. FH) 20252 99999 A39 14 14713000
727 797V 6053000 SRH University of Applied Sciences Heidelberg in Bremen (Priv. FH) 20241 99999 A84 04 04011000
728 797W 6154200 SRH University of Applied Sciences Heidelberg in Heide (Priv. FH) 20242 99999 A83 01 01051044
729 797X 6066700 SRH University of Applied Sciences Heidelberg in Hamburg (Priv. FH) 20242 99999 A68 02 02000000
806 822W 6132830 Duale Hochschule Sachsen - Dresden (FH) 20251 99999 822 14 14612000
807 822X 6132820 Duale Hochschule Sachsen - Breitenbrunn (FH) 20251 99999 822 14 14521110
808 822Y 6132810 Duale Hochschule Sachsen - Bautzen (FH) 20251 99999 822 14 14625020
809 823Z 1043500 German University of Applied Sciences Potsdam (Priv. U) German University of Digital Science (GUDS), Potsdam (Priv. U) 20251 20252 99999 823 12 12054000
810 900Z 8980500 Sonstige deutsche Hochschulen 20042 99999 900 98 00000000
811 950Z 8985000 Berufsakademie in Deutschland 20171 99999 950 98 00000000
812 999Z 9990500 Hochschulen im Ausland 20042 99999 999 99 00000000
814 9991 1092000 HIS Test Eigene Hochschule 20042 99999 999 03 03241001
815 7777 1092000 HIS Test Eigene Hochschule 20042 99999 999 03 03241001
816 1240 1092000 HIS Test Eigene Hochschule 20042 99999 999 03 03241001
817 6666 1092000 HIS Test Eigene Hochschule 20042 99999 999 03 03241001

6
src/de/statspez/plausi/astat/csv/Staat.csv

@ -232,20 +232,20 @@
532;5750;Vanuatu;20042;99999;5;0; 532;5750;Vanuatu;20042;99999;5;0;
533;5400;Niue;20042;99999;5;0; 533;5400;Niue;20042;99999;5;0;
534;5840;Kleinere Amerikanische Überseeinseln (US-Überseegebiet);20142;99999;5;0; 534;5840;Kleinere Amerikanische Überseeinseln (US-Überseegebiet);20142;99999;5;0;
535;5850;Norwegisches Antarktis-Territorium (Norwegisches Überseegebiet);20142;99999;5;0; 535;5850;Norwegisches Antarktis-Territorium (Norwegisches Überseegebiet);20142;20261;5;0;
536;5350;Neuseeland;20042;99999;5;0; 536;5350;Neuseeland;20042;99999;5;0;
537;5450;Palau;20042;99999;5;0; 537;5450;Palau;20042;99999;5;0;
538;5500;Papua-Neuguinea;20042;99999;5;0; 538;5500;Papua-Neuguinea;20042;99999;5;0;
540;5700;Tuvalu;20042;99999;5;0; 540;5700;Tuvalu;20042;99999;5;0;
541;5650;Tonga;20042;99999;5;0; 541;5650;Tonga;20042;99999;5;0;
542;5895;Französische Süd- und Antarktisgebiete (Französisches Überseegebiet);20142;99999;5;0; 542;5895;Französische Süd- und Antarktisgebiete (Französisches Überseegebiet);20142;20261;5;0;
543;5600;Samoa;20042;99999;5;0; 543;5600;Samoa;20042;99999;5;0;
544;5200;Marshallinseln;20042;99999;5;0; 544;5200;Marshallinseln;20042;99999;5;0;
545;5250;Mikronesien;20042;99999;5;0; 545;5250;Mikronesien;20042;99999;5;0;
546;5805;Chilenische Antarktis (Chilenisches Überseegebiet);20142;99999;5;0; 546;5805;Chilenische Antarktis (Chilenisches Überseegebiet);20142;99999;5;0;
547;5860;Australisches Antarktis-Territorium (Australisches Überseegebiet);20142;99999;5;0; 547;5860;Australisches Antarktis-Territorium (Australisches Überseegebiet);20142;99999;5;0;
548;5800;Argentinische Antarktis (Argentinisches Überseegebiet);20142;99999;5;0; 548;5800;Argentinische Antarktis (Argentinisches Überseegebiet);20142;99999;5;0;
549;5810;Neuseeländische Antarktis: Ross-Nebengebiet (Neuseeländisches Überseegebiet);20142;99999;5;0; 549;5810;Neuseeländische Antarktis: Ross-Nebengebiet (Neuseeländisches Überseegebiet);20142;20261;5;0;
997;9000;Staatenlos;20042;99999;9;0; 997;9000;Staatenlos;20042;99999;9;0;
998;9200;Ungeklärt;20042;99999;9;0; 998;9200;Ungeklärt;20042;99999;9;0;
999;9400;Ohne Angabe;20042;99999;9;0; 999;9400;Ohne Angabe;20042;99999;9;0;

1 000 1001 Deutschland 20042 99999 1 1
232 532 5750 Vanuatu 20042 99999 5 0
233 533 5400 Niue 20042 99999 5 0
234 534 5840 Kleinere Amerikanische Überseeinseln (US-Überseegebiet) 20142 99999 5 0
235 535 5850 Norwegisches Antarktis-Territorium (Norwegisches Überseegebiet) 20142 99999 20261 5 0
236 536 5350 Neuseeland 20042 99999 5 0
237 537 5450 Palau 20042 99999 5 0
238 538 5500 Papua-Neuguinea 20042 99999 5 0
239 540 5700 Tuvalu 20042 99999 5 0
240 541 5650 Tonga 20042 99999 5 0
241 542 5895 Französische Süd- und Antarktisgebiete (Französisches Überseegebiet) 20142 99999 20261 5 0
242 543 5600 Samoa 20042 99999 5 0
243 544 5200 Marshallinseln 20042 99999 5 0
244 545 5250 Mikronesien 20042 99999 5 0
245 546 5805 Chilenische Antarktis (Chilenisches Überseegebiet) 20142 99999 5 0
246 547 5860 Australisches Antarktis-Territorium (Australisches Überseegebiet) 20142 99999 5 0
247 548 5800 Argentinische Antarktis (Argentinisches Überseegebiet) 20142 99999 5 0
248 549 5810 Neuseeländische Antarktis: Ross-Nebengebiet (Neuseeländisches Überseegebiet) 20142 99999 20261 5 0
249 997 9000 Staatenlos 20042 99999 9 0
250 998 9200 Ungeklärt 20042 99999 9 0
251 999 9400 Ohne Angabe 20042 99999 9 0

487634
src/de/statspez/plausi/astat/csv/StudienfachMerkmalsKombination.csv

File diff suppressed because it is too large Load Diff

29810
src/de/statspez/plausi/astat/csv/Studienfach_Land.csv

File diff suppressed because it is too large Load Diff

BIN
src/de/statspez/plausi/generated/PL-Pruefungen-ERHEBUNG_GASTHOERER_2026_02_26.pdf

Binary file not shown.

68
src/de/statspez/plausi/generated/PL-Pruefungen-Gasthoerer_2026_02_26.csv

@ -0,0 +1,68 @@
"Evas";"Stat";"Bzr";"Ablaufname";"Ablaufkommentar";"Ablaufbeschreibung";"Statistikname";"Person";"Telefon";"eMail";"Datum";"Ablauf";"Themenbereich";"Nr.-Ablauf";"Prüfschlüssel";"Beschreibung";"Prüfbedingung";"Prüfungsart";"Fehlergewicht";"Korrekturhinweis";"Fehlertext-kurz";"Fehlertext-lang";"Status";"Spezifiziert-in";"Kommentar"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"1";"Einsetzung_1";"";"REIHE (EF2) IN MATERIAL HOCHSCHULFACHBEREICH (key)";"Fehler - maschinelle Korrektur";"1";"";"Einsetzung des Hochschulfachbereiches";"Anhand des Signierschlüssels der Hochschule (EF2) wird über die Schlüsseltabelle HOCHSCHULFACHBEREICH der Sortierschlüssel der Hochschule (EF15) übernommen.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";""
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"2";"Einsetzung_2";"";"EF15 /= LEER";"Fehler - maschinelle Korrektur";"1";"";"Einsetzung des Berichtslandes";"Anhand der Satzstellen 2 bis 3 des eingesetzten Sortierschlüssels der Hochschule wird der Sortierschlüssel Bundesland in das EF13 eingesetzt.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";""
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"3";"Einsetzung_4";"";"REIHE (EF7) IN MATERIAL STAAT (key)";"Fehler - maschinelle Korrektur";"1";"";"Einsetzung des Sortieschlüssels Staatsangehörigkeit";"Anhand des Signierschlüssels Staatsangehörigkeit (EF7) wird über die Schlüsseltabelle STAAT der Sortierschlüssel für die Staatsangehörigkeit (EF16) eingesetzt.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";""
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"4";"MA_00";"";"EF2 /= LEER";"Fehler - maschinelle Korrektur";"1";"";"Leerzeichen und NULL werden in LEER umgesetzt";"Alle leeren Eingabefelder die von den liefernden Hochschulen mit Leerzeichen oder NULL gefüllt wurden, werden auf LEER gesetzt. Ist EF1 ungleich '1' wird '1' eingesetzt. Ebenso werden die Eingabefelder für die Sortierschlüssel wieder auf LEER gesetzt damit diese bei jedem neuen PL Durchlauf wieder neu gesetzt werden.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";""
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"5";"MA_01";"";"EF9 /= LEER UND EF10 /= LEER UND EF9 = EF10";"Fehler - maschinelle Korrektur";"1";"";"Löschen der 2. Fachrichtung";"Wenn die 1. und 2. Fachrichtung gleich sind, wird die 2. gelöscht.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";"Ehemalige Einsetzung A1/"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"6";"MA_05";"";"EF9 /= LEER UND EF11 /= LEER UND EF9 = EF11";"Fehler - maschinelle Korrektur";"1";"";"Löschen der 3. Fachrichtung";"Wenn die 1. und 3. Fachrichtung gleich sind, wird die 3. gelöscht.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";"Ehemalige Einsetzung A2/"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"7";"MA_10";"";"EF10 /= LEER UND EF11 /= LEER UND EF10 = EF11";"Fehler - maschinelle Korrektur";"1";"";"Löschen der 3. Fachrichtung";"Wenn die 2. und 3. Fachrichtung gleich sind, wird die 3. gelöscht.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";"Ehemalige Einsetzung A3/"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"8";"MA_15";"";"EF9 = LEER UND EF10 /= LEER UND EF11 /= LEER";"Fehler - maschinelle Korrektur";"1";"";"Umsetzung der Fachrichtungen";"Wenn die 1. Fachrichtung LEER und die 2. und 3. Fachrichtung belegt ist. wird die 2. und 3. Fachrichtung als 1. und 2. Fachrichtung gesetzt.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";"Ehemalige Einsetzung A4/"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"9";"MA_20";"";"EF10 = LEER UND EF11 /= LEER";"Fehler - maschinelle Korrektur";"1";"";"Umsetzung der Fachrichtungen";"Wenn die 2. Fachrichtung LEER und die 3. Fachrichtung belegt ist. wird die 3. Fachrichtung als 2. Fachrichtung gesetzt.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";"Ehemalige Einsetzung A5/"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"10";"MA_25";"";"EF9 = LEER UND EF10 /= LEER";"Fehler - maschinelle Korrektur";"1";"";"Umsetzung der Fachrichtungen";"Wenn die 1. Fachrichtung LEER und die 2. Fachrichtung belegt ist. wird die 2. Fachrichtung als 1. Fachrichtung gesetzt.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";"Ehemalige Einsetzung A6/"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"11";"MA_30";"";"EF9 = LEER UND EF10 = LEER UND EF11 = LEER";"Fehler - maschinelle Korrektur";"1";"";"Einsetzung von '99' in die 1. Fachrichtung";"Wenn die 1. bis 3. Fachrichtung nicht belegt sind, wird in die 1. Fachrichtung '99' = Ungeklärt/Unbekannt eingesetzt.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";"Ehemalige Einsetzung A7/"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"12";"SIG_05";"";"(FUNKTION WERTLAENGE (EF2) /= 4)
ODER
(EF2 IN {'4730','4740','4750','4760','4770','4780','4790','4800','4810','4820','4830','4840','4850','4860','4870','4880','4890','4900',
'4910','4920','4930','409A','409B','409C','409D','409E'})
ODER
(FUNKTION NUMERISCH (EF2) UND EF2 IN {3980, 3990, 4000, 4001, 4002..4500})
ODER
(NICHT EF2 IN MATERIAL HOCHSCHULFACHBEREICH (key))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Falsche Signatur bei der Hochschule";"Die Signatur der Hochschule (EF2) ist gleich '9000','9500', '9990' oder ist eine Signatur einer Berufsakademie oder eines Promotionszentrums oder stimmt nicht mit dem Signierschlüssel aus der Schlüsseltabelle HOCHSCHULFACHBEREICH überein.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";"Ehemaliger Signierfehler 03*"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"13";"SIG_10";"";"(FUNKTION WERTLAENGE (EF5) /= 1)
ODER
(NICHT &NUMERISCH (EF5))
ODER
NICHT (EF5 IN {'1','2','3','4'})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Falsche Signatur beim Geschlecht";"Geschlecht (EF5) ungleich 1, 2, 3 oder 4, Stand der PL Klassen vom 26.02.2026";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";"Ehemaliger Signierfehler 04*"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"14";"SIG_15";"";"(FUNKTION WERTLAENGE (EF6U1) /= 2 UND EF6U1 /= LEER)
ODER
(NICHT &NUMERISCH (EF6U1) UND EF6U1 /= LEER)
ODER
NICHT (EF6U1 IN {LEER,01,02..12})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Falsche Signatur beim Geburtsmonat";"Die Signatur des Geburtsmonats (EF6U1) ist NICHT gleich LEER oder 01 bis 12.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";"Ehemaliger Signierfehler 05*"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"15";"SIG_20";"";"EF6U1= LEER";"Prüfhinweis - manuelle Korrektur (""Kannfehler"")";"1";"";"Der Geburtsmonat ist LEER";"Der Geburtsmonat (EF6U1) ist gleich LEER.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";"Ehemaliger Signierfehler 06"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"16";"SIG_25";"";"(FUNKTION WERTLAENGE (EF6U2) /= 4 UND EF6U2 /= LEER)
ODER
(NICHT &NUMERISCH (EF6U2) UND EF6U2 /= LEER)
ODER
NICHT (EF6U2 IN {LEER,1912,1913..2020})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Falsche Signatur beim Geburtsjahr";"Die Signatur des Geburtsjahres (EF6U2) ist NICHT gleich LEER oder 1913 bis 2020.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";"Ehemaliger Signierfehler 07*"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"17";"SIG_30";"";"EF6U2 = LEER";"Prüfhinweis - manuelle Korrektur (""Kannfehler"")";"1";"";"Das Geburtsjahr ist LEER";"Das Geburtsjahr (EF6U2) ist gleich LEER.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";"Ehemaliger Signierfehler 08"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"18";"SIG_35";"";"(EF7 /= LEER UND NICHT (EF7 IN MATERIAL STAAT (key)))
ODER
(EF7 IN {'112','113','114','115','116','182','211','214','216','311','315','316','317','319','321',
'325','329','331','338','341','342','343','344','352','510','511','512','513','514','515','517',
'519','520','521','522','525','528','529','534','535', '542','546','547','548','549'})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Falsche Signatur bei der Staatsangehörigkeit";"Die Signatur der Staatsangehörigkeit (EF7) ist ungleich LEER und stimmt nicht mit dem Signierschlüssel aus der Schlüsseltabelle STAAT überein ODER es ist ein Signierschlüssel eines abhängigen Gebietes angegeben.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";"Ehemaliger Signierfehler 09*"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"19";"SIG_40";"";"EF7 = LEER";"Prüfhinweis - manuelle Korrektur (""Kannfehler"")";"1";"";"Die Signatur der Staatsangehörigkeit ist LEER";"Die Signatur der Staatsangehörigkeit (EF7) ist gleich LEER.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";"Ehemaliger Signierfehler 10"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"20";"SIG_45";"";"NICHT (EF9 IN MATERIAL FACHRICHTUNGENGAST (key))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Falsche Signatur bei der 1. Fachrichtung";"Die Signatur der 1. Fachrichtung (EF9) stimmt nicht mit dem Signierschlüssel aus der Schlüsseltabelle FACHRICHTUNGENGAST überein.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";"Ehemaliger Signierfehler 11*"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"21";"SIG_50";"";"EF10 /= LEER UND
NICHT (EF10 IN MATERIAL FACHRICHTUNGENGAST (key))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Falsche Signatur bei der 2. Fachrichtung";"Die Signatur der 2. Fachrichtung (EF10) ist ungleich LEER und stimmt nicht mit dem Signierschlüssel aus der Schlüsseltabelle FACHRICHTUNGENGAST überein.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";"Ehemaliger Signierfehler 12*"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"22";"SIG_55";"";"EF11 /= LEER UND
NICHT (EF11 IN MATERIAL FACHRICHTUNGENGAST (key))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Falsche Signatur bei der 3. Fachrichtung";"Die Signatur der 3. Fachrichtung (EF11) ist ungleich LEER und stimmt nicht mit dem Signierschlüssel aus der Schlüsseltabelle FACHRICHTUNGENGAST überein.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";"Ehemaliger Signierfehler 13*"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"23";"SIG_60";"";"FUNKTION NUMERISCH (EF6U2)
UND
FUNKTION NUMERISCH (EF14)
UND
EF6U2 /= LEER
UND
FUNKTION ALS_GANZZAHL(EF14) - FUNKTION ALS_GANZZAHL(EF6U2) < 10";"Prüfhinweis - manuelle Korrektur (""Kannfehler"")";"1";"";"Der Gasthörer ist jünger als 10 Jahre";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";"Ehemaliger Signierfehler 14"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"24";"SIG_65";"";"EF2 IN {'0081', '0089', '0261', '0269', '0271', '0279', '0309', '0311', '0319', '0361', '0369', '0371',
'0379', '0491', '0499', '0640', '0650', '0950', '1001', '1011', '1021', '1029', '1031', '1039', '1081', '1089',
'1091', '1099', '1101', '1109', '1111', '1119', '1121', '1129', '1161', '1169', '1241', '1249', '1251', '1258',
'1259', '1271', '1279', '1293', '1319', '1321', '1329', '1331', '1339', '1341', '1349', '1361',
'1362', '1369', '1378', '1379', '1390', '1481', '1489', '1491', '1499', '1639', '1731', '1739',
'1821', '1829', '5021', '5022', '5024', '5025', '5026', '5027', '5028', '5150', '5160', '6245', '7467', '6380',
'8100'}";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Der Signierschlüssel für die Hochschulen ist nicht zulässig";"Bei Signierschlüssel der Hochschule (EF2) steht ein Schlüssel der nur bei der Personal und Stellenstatistik zulässig ist.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";""
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"25";"UF_05M";"";"EF6U1 /= LEER UND EF6U2 = LEER";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Geburtsmonat vorhanden und Geburtsjahr fehlt";"Der Geburtsmonat (EF6U1) ist besetzt, das Geburtsdatum (EF6U2) jedoch fehlt.";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";"Ehemalige Kombinationskontrolle AA*"
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"26";"Einsetzung_5";"";"REIHE (EF9) IN MATERIAL FACHRICHTUNGENGAST (key)";"Fehler - maschinelle Korrektur";"1";"";"Einsetzung der Fächergruppe und des Sortierschlüssels der 1. Fachrichtung";"Einsetzung der Fächergruppe (EF17) und des Sortierschlüssels der 1. Fachrichtung (EF18) anhand der Schüsseltabelle FACHRICHTUNGENGAST über den Signierschlüssel (EF9).";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";""
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"27";"Einsetzung_6";"";"EF10 /= LEER UND
REIHE (EF10) IN MATERIAL FACHRICHTUNGENGAST (key)";"Fehler - maschinelle Korrektur";"1";"";"Einsetzung der Fächergruppe und des Sortierschlüssels der 2. Fachrichtung";"Einsetzung der Fächergruppe (EF19) und des Sortierschlüssels der 2. Fachrichtung (EF20) anhand der Schüsseltabelle FACHRICHTUNGENGAST über den Signierschlüssel (EF10).";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";""
"";"T_Gasthoerer";"";"T_Gasthoerer.Gasthoerer_Ablauf";"Ablauf wurde automatisch generiert";"";"VIE_Hochschulstatistik_PL.Gasthoerer";"Feuerstein-T";"TELEFON";"EMAIL";"26.02.2026 - 08:23";"T_Gasthoerer.Gasthoerer_Ablauf";"";"28";"Einsetzung_7";"";"EF11 /= LEER UND
REIHE (EF11) IN MATERIAL FACHRICHTUNGENGAST (key)";"Fehler - maschinelle Korrektur";"1";"";"Einsetzung der Fächergruppe und des Sortierschlüssels der 3. Fachrichtung";"Einsetzung der Fächergruppe (EF21) und des Sortierschlüssels der 3. Fachrichtung (EF22) anhand der Schüsseltabelle FACHRICHTUNGENGAST über den Signierschlüssel (EF11).";"Freigegeben";"VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer";""
1 Evas Stat Bzr Ablaufname Ablaufkommentar Ablaufbeschreibung Statistikname Person Telefon eMail Datum Ablauf Themenbereich Nr.-Ablauf Prüfschlüssel Beschreibung Prüfbedingung Prüfungsart Fehlergewicht Korrekturhinweis Fehlertext-kurz Fehlertext-lang Status Spezifiziert-in Kommentar
2 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 1 Einsetzung_1 REIHE (EF2) IN MATERIAL HOCHSCHULFACHBEREICH (key) Fehler - maschinelle Korrektur 1 Einsetzung des Hochschulfachbereiches Anhand des Signierschlüssels der Hochschule (EF2) wird über die Schlüsseltabelle HOCHSCHULFACHBEREICH der Sortierschlüssel der Hochschule (EF15) übernommen. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer
3 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 2 Einsetzung_2 EF15 /= LEER Fehler - maschinelle Korrektur 1 Einsetzung des Berichtslandes Anhand der Satzstellen 2 bis 3 des eingesetzten Sortierschlüssels der Hochschule wird der Sortierschlüssel Bundesland in das EF13 eingesetzt. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer
4 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 3 Einsetzung_4 REIHE (EF7) IN MATERIAL STAAT (key) Fehler - maschinelle Korrektur 1 Einsetzung des Sortieschlüssels Staatsangehörigkeit Anhand des Signierschlüssels Staatsangehörigkeit (EF7) wird über die Schlüsseltabelle STAAT der Sortierschlüssel für die Staatsangehörigkeit (EF16) eingesetzt. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer
5 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 4 MA_00 EF2 /= LEER Fehler - maschinelle Korrektur 1 Leerzeichen und NULL werden in LEER umgesetzt Alle leeren Eingabefelder die von den liefernden Hochschulen mit Leerzeichen oder NULL gefüllt wurden, werden auf LEER gesetzt. Ist EF1 ungleich '1' wird '1' eingesetzt. Ebenso werden die Eingabefelder für die Sortierschlüssel wieder auf LEER gesetzt damit diese bei jedem neuen PL Durchlauf wieder neu gesetzt werden. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer
6 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 5 MA_01 EF9 /= LEER UND EF10 /= LEER UND EF9 = EF10 Fehler - maschinelle Korrektur 1 Löschen der 2. Fachrichtung Wenn die 1. und 2. Fachrichtung gleich sind, wird die 2. gelöscht. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer Ehemalige Einsetzung A1/
7 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 6 MA_05 EF9 /= LEER UND EF11 /= LEER UND EF9 = EF11 Fehler - maschinelle Korrektur 1 Löschen der 3. Fachrichtung Wenn die 1. und 3. Fachrichtung gleich sind, wird die 3. gelöscht. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer Ehemalige Einsetzung A2/
8 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 7 MA_10 EF10 /= LEER UND EF11 /= LEER UND EF10 = EF11 Fehler - maschinelle Korrektur 1 Löschen der 3. Fachrichtung Wenn die 2. und 3. Fachrichtung gleich sind, wird die 3. gelöscht. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer Ehemalige Einsetzung A3/
9 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 8 MA_15 EF9 = LEER UND EF10 /= LEER UND EF11 /= LEER Fehler - maschinelle Korrektur 1 Umsetzung der Fachrichtungen Wenn die 1. Fachrichtung LEER und die 2. und 3. Fachrichtung belegt ist. wird die 2. und 3. Fachrichtung als 1. und 2. Fachrichtung gesetzt. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer Ehemalige Einsetzung A4/
10 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 9 MA_20 EF10 = LEER UND EF11 /= LEER Fehler - maschinelle Korrektur 1 Umsetzung der Fachrichtungen Wenn die 2. Fachrichtung LEER und die 3. Fachrichtung belegt ist. wird die 3. Fachrichtung als 2. Fachrichtung gesetzt. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer Ehemalige Einsetzung A5/
11 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 10 MA_25 EF9 = LEER UND EF10 /= LEER Fehler - maschinelle Korrektur 1 Umsetzung der Fachrichtungen Wenn die 1. Fachrichtung LEER und die 2. Fachrichtung belegt ist. wird die 2. Fachrichtung als 1. Fachrichtung gesetzt. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer Ehemalige Einsetzung A6/
12 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 11 MA_30 EF9 = LEER UND EF10 = LEER UND EF11 = LEER Fehler - maschinelle Korrektur 1 Einsetzung von '99' in die 1. Fachrichtung Wenn die 1. bis 3. Fachrichtung nicht belegt sind, wird in die 1. Fachrichtung '99' = Ungeklärt/Unbekannt eingesetzt. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer Ehemalige Einsetzung A7/
13 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 12 SIG_05 (FUNKTION WERTLAENGE (EF2) /= 4) ODER (EF2 IN {'4730','4740','4750','4760','4770','4780','4790','4800','4810','4820','4830','4840','4850','4860','4870','4880','4890','4900', '4910','4920','4930','409A','409B','409C','409D','409E'}) ODER (FUNKTION NUMERISCH (EF2) UND EF2 IN {3980, 3990, 4000, 4001, 4002..4500}) ODER (NICHT EF2 IN MATERIAL HOCHSCHULFACHBEREICH (key)) Fehler - manuelle Korrektur ("Mussfehler") 1 Falsche Signatur bei der Hochschule Die Signatur der Hochschule (EF2) ist gleich '9000','9500', '9990' oder ist eine Signatur einer Berufsakademie oder eines Promotionszentrums oder stimmt nicht mit dem Signierschlüssel aus der Schlüsseltabelle HOCHSCHULFACHBEREICH überein. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer Ehemaliger Signierfehler 03*
14 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 13 SIG_10 (FUNKTION WERTLAENGE (EF5) /= 1) ODER (NICHT &NUMERISCH (EF5)) ODER NICHT (EF5 IN {'1','2','3','4'}) Fehler - manuelle Korrektur ("Mussfehler") 1 Falsche Signatur beim Geschlecht Geschlecht (EF5) ungleich 1, 2, 3 oder 4, Stand der PL Klassen vom 26.02.2026 Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer Ehemaliger Signierfehler 04*
15 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 14 SIG_15 (FUNKTION WERTLAENGE (EF6U1) /= 2 UND EF6U1 /= LEER) ODER (NICHT &NUMERISCH (EF6U1) UND EF6U1 /= LEER) ODER NICHT (EF6U1 IN {LEER,01,02..12}) Fehler - manuelle Korrektur ("Mussfehler") 1 Falsche Signatur beim Geburtsmonat Die Signatur des Geburtsmonats (EF6U1) ist NICHT gleich LEER oder 01 bis 12. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer Ehemaliger Signierfehler 05*
16 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 15 SIG_20 EF6U1= LEER Prüfhinweis - manuelle Korrektur ("Kannfehler") 1 Der Geburtsmonat ist LEER Der Geburtsmonat (EF6U1) ist gleich LEER. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer Ehemaliger Signierfehler 06
17 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 16 SIG_25 (FUNKTION WERTLAENGE (EF6U2) /= 4 UND EF6U2 /= LEER) ODER (NICHT &NUMERISCH (EF6U2) UND EF6U2 /= LEER) ODER NICHT (EF6U2 IN {LEER,1912,1913..2020}) Fehler - manuelle Korrektur ("Mussfehler") 1 Falsche Signatur beim Geburtsjahr Die Signatur des Geburtsjahres (EF6U2) ist NICHT gleich LEER oder 1913 bis 2020. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer Ehemaliger Signierfehler 07*
18 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 17 SIG_30 EF6U2 = LEER Prüfhinweis - manuelle Korrektur ("Kannfehler") 1 Das Geburtsjahr ist LEER Das Geburtsjahr (EF6U2) ist gleich LEER. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer Ehemaliger Signierfehler 08
19 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 18 SIG_35 (EF7 /= LEER UND NICHT (EF7 IN MATERIAL STAAT (key))) ODER (EF7 IN {'112','113','114','115','116','182','211','214','216','311','315','316','317','319','321', '325','329','331','338','341','342','343','344','352','510','511','512','513','514','515','517', '519','520','521','522','525','528','529','534','535', '542','546','547','548','549'}) Fehler - manuelle Korrektur ("Mussfehler") 1 Falsche Signatur bei der Staatsangehörigkeit Die Signatur der Staatsangehörigkeit (EF7) ist ungleich LEER und stimmt nicht mit dem Signierschlüssel aus der Schlüsseltabelle STAAT überein ODER es ist ein Signierschlüssel eines abhängigen Gebietes angegeben. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer Ehemaliger Signierfehler 09*
20 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 19 SIG_40 EF7 = LEER Prüfhinweis - manuelle Korrektur ("Kannfehler") 1 Die Signatur der Staatsangehörigkeit ist LEER Die Signatur der Staatsangehörigkeit (EF7) ist gleich LEER. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer Ehemaliger Signierfehler 10
21 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 20 SIG_45 NICHT (EF9 IN MATERIAL FACHRICHTUNGENGAST (key)) Fehler - manuelle Korrektur ("Mussfehler") 1 Falsche Signatur bei der 1. Fachrichtung Die Signatur der 1. Fachrichtung (EF9) stimmt nicht mit dem Signierschlüssel aus der Schlüsseltabelle FACHRICHTUNGENGAST überein. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer Ehemaliger Signierfehler 11*
22 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 21 SIG_50 EF10 /= LEER UND NICHT (EF10 IN MATERIAL FACHRICHTUNGENGAST (key)) Fehler - manuelle Korrektur ("Mussfehler") 1 Falsche Signatur bei der 2. Fachrichtung Die Signatur der 2. Fachrichtung (EF10) ist ungleich LEER und stimmt nicht mit dem Signierschlüssel aus der Schlüsseltabelle FACHRICHTUNGENGAST überein. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer Ehemaliger Signierfehler 12*
23 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 22 SIG_55 EF11 /= LEER UND NICHT (EF11 IN MATERIAL FACHRICHTUNGENGAST (key)) Fehler - manuelle Korrektur ("Mussfehler") 1 Falsche Signatur bei der 3. Fachrichtung Die Signatur der 3. Fachrichtung (EF11) ist ungleich LEER und stimmt nicht mit dem Signierschlüssel aus der Schlüsseltabelle FACHRICHTUNGENGAST überein. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer Ehemaliger Signierfehler 13*
24 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 23 SIG_60 FUNKTION NUMERISCH (EF6U2) UND FUNKTION NUMERISCH (EF14) UND EF6U2 /= LEER UND FUNKTION ALS_GANZZAHL(EF14) - FUNKTION ALS_GANZZAHL(EF6U2) < 10 Prüfhinweis - manuelle Korrektur ("Kannfehler") 1 Der Gasthörer ist jünger als 10 Jahre Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer Ehemaliger Signierfehler 14
25 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 24 SIG_65 EF2 IN {'0081', '0089', '0261', '0269', '0271', '0279', '0309', '0311', '0319', '0361', '0369', '0371', '0379', '0491', '0499', '0640', '0650', '0950', '1001', '1011', '1021', '1029', '1031', '1039', '1081', '1089', '1091', '1099', '1101', '1109', '1111', '1119', '1121', '1129', '1161', '1169', '1241', '1249', '1251', '1258', '1259', '1271', '1279', '1293', '1319', '1321', '1329', '1331', '1339', '1341', '1349', '1361', '1362', '1369', '1378', '1379', '1390', '1481', '1489', '1491', '1499', '1639', '1731', '1739', '1821', '1829', '5021', '5022', '5024', '5025', '5026', '5027', '5028', '5150', '5160', '6245', '7467', '6380', '8100'} Fehler - manuelle Korrektur ("Mussfehler") 1 Der Signierschlüssel für die Hochschulen ist nicht zulässig Bei Signierschlüssel der Hochschule (EF2) steht ein Schlüssel der nur bei der Personal und Stellenstatistik zulässig ist. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer
26 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 25 UF_05M EF6U1 /= LEER UND EF6U2 = LEER Fehler - manuelle Korrektur ("Mussfehler") 1 Geburtsmonat vorhanden und Geburtsjahr fehlt Der Geburtsmonat (EF6U1) ist besetzt, das Geburtsdatum (EF6U2) jedoch fehlt. Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer Ehemalige Kombinationskontrolle AA*
27 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 26 Einsetzung_5 REIHE (EF9) IN MATERIAL FACHRICHTUNGENGAST (key) Fehler - maschinelle Korrektur 1 Einsetzung der Fächergruppe und des Sortierschlüssels der 1. Fachrichtung Einsetzung der Fächergruppe (EF17) und des Sortierschlüssels der 1. Fachrichtung (EF18) anhand der Schüsseltabelle FACHRICHTUNGENGAST über den Signierschlüssel (EF9). Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer
28 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 27 Einsetzung_6 EF10 /= LEER UND REIHE (EF10) IN MATERIAL FACHRICHTUNGENGAST (key) Fehler - maschinelle Korrektur 1 Einsetzung der Fächergruppe und des Sortierschlüssels der 2. Fachrichtung Einsetzung der Fächergruppe (EF19) und des Sortierschlüssels der 2. Fachrichtung (EF20) anhand der Schüsseltabelle FACHRICHTUNGENGAST über den Signierschlüssel (EF10). Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer
29 T_Gasthoerer T_Gasthoerer.Gasthoerer_Ablauf Ablauf wurde automatisch generiert VIE_Hochschulstatistik_PL.Gasthoerer Feuerstein-T TELEFON EMAIL 26.02.2026 - 08:23 T_Gasthoerer.Gasthoerer_Ablauf 28 Einsetzung_7 EF11 /= LEER UND REIHE (EF11) IN MATERIAL FACHRICHTUNGENGAST (key) Fehler - maschinelle Korrektur 1 Einsetzung der Fächergruppe und des Sortierschlüssels der 3. Fachrichtung Einsetzung der Fächergruppe (EF21) und des Sortierschlüssels der 3. Fachrichtung (EF22) anhand der Schüsseltabelle FACHRICHTUNGENGAST über den Signierschlüssel (EF11). Freigegeben VIE_Hochschulstatistik_PL.Gasthoerer.T_Gasthoerer

616
src/de/statspez/plausi/generated/PL-Pruefungen-PROMOVIERENDE_2026_02_26.csv

@ -0,0 +1,616 @@
"Evas";"Stat";"Bzr";"Ablaufname";"Ablaufkommentar";"Ablaufbeschreibung";"Statistikname";"Person";"Telefon";"eMail";"Datum";"Ablauf";"Themenbereich";"Nr.-Ablauf";"Prüfschlüssel";"Beschreibung";"Prüfbedingung";"Prüfungsart";"Fehlergewicht";"Korrekturhinweis";"Fehlertext-kurz";"Fehlertext-lang";"Status";"Spezifiziert-in";"Kommentar"
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"1";"MA_001";"";"EF3 /= LEER";"Fehler - maschinelle Korrektur";"1";"";"Alle leeren Eingabefelder die von den liefernden Hochschulen mit Leerzeichen gefüllt wurden, werden auf LEER gesetzt.";"Alle leeren Eingabefelder die von den liefernden Hochschulen mit Leerzeichen gefüllt wurden, werden auf LEER gesetzt. (Ausnahme sind die Felder frei für StLÄ)";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"2";"MA_002";"";"EF3 /= LEER";"Fehler - maschinelle Korrektur";"1";"";"Alle leeren Eingabefelder die von den liefernden Hochschulen mit 0 gefüllt wurden, werden auf LEER gesetzt. (Ausnahme sind die EF in denen 0 eine zulässige Signatur ist.)";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"3";"MA_003";"";"(EF14U1 = LEER UND EF14U2 = LEER) UND EF12 IN {'5','6'}";"Fehler - maschinelle Korrektur";"1";"";"Bei fehlender Angabe des Promotionsendes wird der Dezember des Berichtsjahres eingesetzt.";"Wenn EF12=5 (erfolgreicher Abschluss) oder 6 (Abbruch) ist und EF14 LEER ist, dann wird für EF14 das Datum Dezember (12) des Berichtsjahres EF2 eingesetzt.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"4";"MA_004";"";"(EF19 IN {'0110','0330','0350','1300','1400','1620','1670','2010','2070','2330',
'2460','2470','2661','3600','3650','3740','3730','3760','5070',
'5180','5200','5290','5335','5386','5572','5574','5580','5600',
'5870','5903','6209','6283','6250','6310','6420','6450','6500','6880',
'6920','6940','7000','7200','7640','7650','7660','7800','8042','8043',
'8121','8122','8130','8160' })
ODER
(EF19 IN {'2271'} UND &KONKATENIEREN (EF22, EF21) < '20182')";"Fehler - maschinelle Korrektur";"1";"PSEUDONYMMERKMAL: Diese Prüfung muss mit Studierenden- und Prüfungsstatistik identisch sein zwecks Pseudonymerstellung für Studienverläufe. Auszug Protokoll Referentenbesprechung: Das Statistische Bundesamt erläutert, das für alle Hochschulen, die im Sommersemester 2017 nicht mehr bestehen, für die Hochschule der Ersteinschreibung der Schlüssel „9000“ (sonstige deutsche Hochschule) zu verwenden ist. Dagegen müssen Hochschulen, die ab dem Sommersemester 2017 stillgelegt werden, bezüglich der Hochschule der Ersteinschreibung weiterhin mit dem ehemaligen, aktuell aber nicht mehr gültigen Schlüssel signiert werden. Das Statistische Bundesamt erörtert mit dem für DAHStat zuständigen HSL, wie diese Anforderung im Schlüsselverzeichnis umgesetzt bzw. in der PL verhindert werden kann, dass Schlüssel für ehemalige Hochschulen bei der Verschlüsselung der aktuelle Hochschule verwendet werden.";"Wenn die Hochschule der Ersteinschreibung aufgelöst wurde, wird der Signierschlüssel 9000 eingesetzt.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"5";"MA_005";"";"EF19 IN {'0070','0090','0091','0092','0122','0123','0124','0210','0220','0230','0250','0280','0290','0303','0320','0340',
'0381','0382','0400','0410','0420','0430','0440','0450','0460','0470','0480','0531','0532','0550','0561','0562','0570','0600',
'0610','0810','0851','0852','0853','0990','0991','0992','0993','1070','1229','1310','1320','1387','1388','1630','1640','1650',
'1720','1860','2090','2110','2120','2140','2160','2250','2260','2310','2340','2400','2480','2562','2563','2662','2680','2751',
'2780','2820','2840','2910','2970','3012','3110','3150','3160','3170','3180','3190','3200','3210','3220','3280','3300','3310',
'3320','3330','3340','3350','3380','3390','3400','3410','3420','3450','3460','3470','3480','3510','3520','3531','3532','3540',
'3551','3552','3553','3560','3570','3580','3581','3582','3583','3590','3610','3620','3630','3690','3712','3750','3770','3800',
'3810','3820','3830','3840','3850','3860','3870','3920','3960','5021','5022','5023','5024','5025','5026','5027','5028','5031',
'5032','5033','5040','5301','5302','5303','5304','5305','5320','5331','5332','5333','5334','5340','5360','5370','5383','5384',
'5390','5421','5422','5441','5442','5450','5462','5463','5481','5482','5490','5502','5510','5520','5530','5540','5550','5560',
'5571','5573','5590','5610','5620','5630','5640','5650','5740','5750','5760','5790','5811','5812','5850','5880','5900','5910',
'5920','5930','5940','5950','5960','5970','6010','6020','6040','6050','6060','6073','6078','6079','6080','6090','6100','6110',
'6120','6130','6140','6150','6160','6170','6201','620A','6242','6260','6300','6341','6350','6440','6460','6470','6480','6490',
'6520','6550','6561','6562','6570','6580','6651','6652','6871','6872','6930','6950','6960','6980','6990','7030','7040','7080',
'7100','7130','7150','7160','7170','7191','7192','7221','7222','7230','7340','7353','7360','7371','7373','7380','7390','7400',
'7410','7441','7442','7470','7480','7490','7500','7510','7520','7530','7711','7712','7713','7714','7720','7740','7760','7770',
'7861','7862','7863','7870','8041','8044','8050','8070'}";"Fehler - maschinelle Korrektur";"1";"PSEUDONYMMERKMAL: Diese Prüfung muss mit Studierenden- und Prüfungsstatistik identisch sein zwecks Pseudonymerstellung für Studienverläufe. Diese Prüfung muss mit Studierenden- und Prüfungsstatistik identisch sein zwecks Pseudonymerstellung für Studienverläufe. Auszug Protokoll Referentenbesprechung: Das Statistische Bundesamt erläutert, das für alle Hochschulen, die im Sommersemester 2017 nicht mehr bestehen, für die Hochschule der Ersteinschreibung der Schlüssel „9000“ (sonstige deutsche Hochschule) zu verwenden ist. Dagegen müssen Hochschulen, die ab dem Sommersemester 2017 stillgelegt werden, bezüglich der Hochschule der Ersteinschreibung weiterhin mit dem ehemaligen, aktuell aber nicht mehr gültigen Schlüssel signiert werden. Das Statistische Bundesamt erörtert mit dem für DAHStat zuständigen HSL, wie diese Anforderung im Schlüsselverzeichnis umgesetzt bzw. in der PL verhindert werden kann, dass Schlüssel für ehemalige Hochschulen bei der Verschlüsselung der aktuelle Hochschule verwendet werden.";"Wenn die Hochschule der Ersteinschreibung in eine andere Hochschule eingegliedert wurde, wird der Signierschlüssel der neuen Hochschule eingesetzt.";"Wenn der Hochschulstandort der Ersteinschreibung in eine andere Hochschule eingegliedert wurde, wird der Signierschlüssel des neuen Hochschulstandortes
eingesetzt.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"6";"MA_006";"";"NICHT EF1 IN {'09'} UND
EF8 > '000' UND EF33U1 = '99' UND
NICHT (EF32 IN {'31','39','51','59','76','79','17','47','67'})
UND
EF19 IN MATERIAL HOCHSCHULFACHBEREICH (key) UND
&fkt_MA_007() IN {60000000,60000001..79999999}";"Fehler - maschinelle Korrektur";"1";"PSEUDONYMMERKMAL: Diese Prüfung muss mit Studierenden- und Prüfungsstatistik identisch sein zwecks Pseudonymerstellung für Studienverläufe.";"Ausländer mit Erwerb der HZB im Ausland und falsche oder fehlende Angaben zur Art der HZB";"Einsetzung der Signatur '79' bei Art der HZB. Nur bei Fach- und Verwaltungsfachhochschulen.Bei wissenschaftlichen
Hochschulen Kontrolle MA_007. Diese Kontrolle wird nicht für Bayern ausgeführt.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"7";"MA_007";"";"NICHT EF1 IN {'09'} UND
EF8 > '000' UND EF33U1 = '99' UND
NICHT (EF32 IN {'31','39','51','59','76','79','17','47','67'})
UND
EF19 IN MATERIAL HOCHSCHULFACHBEREICH (key) UND
NICHT (&fkt_MA_007() IN {60000000,60000001..79999999})";"Fehler - maschinelle Korrektur";"1";"PSEUDONYMMERKMAL: Diese Prüfung muss mit Studierenden- und Prüfungsstatistik identisch sein zwecks Pseudonymerstellung für Studienverläufe.";"Ausländer mit Erwerb der HZB im Ausland und falsche oder fehlende Angaben zur Art der HZB";"Einsetzung der Signatur '39' bei Art der HZB. Nur bei wissenschaftlichen Hochschulen.Bei Fach- und Verwaltungsfachhochschulen Kontrolle MA_006. Diese Kontrolle wird nicht für Bayern ausgeführt.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"8";"MA_008";"";"NICHT EF1 IN {'09'} UND
EF32 IN {'39','59','79','17','47','67'}
UND
FUNKTION NUMERISCH (EF8) UND EF8 IN {001,002..998,999}
UND
(EF33U1 = LEER ODER EF33U1 = ' ')";"Fehler - maschinelle Korrektur";"1";"PSEUDONYMMERKMAL: Diese Prüfung muss mit Studierenden- und Prüfungsstatistik identisch sein zwecks Pseudonymerstellung für Studienverläufe.";"Einsetzung Land des Erwerbs der HZB (Nur bei Ausländer)";"Ausländer und keine Angaben im Land des Erwerbs der HZB (EF33U1), wird 99 für Ausland als Land des Erwerbs der HZB übernommen.Diese Kontrolle wird nicht für Bayern ausgeführt.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"9";"MA_009";"";"EF32 IN {'39','59','79','17','47','67'}
UND
FUNKTION NUMERISCH (EF8) UND EF8 IN {001,002..998,999}
UND
(EF33U2 = LEER ODER EF33U2 = ' ')";"Fehler - maschinelle Korrektur";"1";"PSEUDONYMMERKMAL: Diese Prüfung muss mit Studierenden- und Prüfungsstatistik identisch sein zwecks Pseudonymerstellung für Studienverläufe.";"Einsetzung Staat des Erwerbs der HZB (Nur bei Ausländer)";"Ausländer und keine Angaben im Staat des Erwerbs der HZB (EF33U2), wird Staatsangehörigkeit für Staat des Erwerbs der ersten HZB übernommen.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"10";"MA_010";"";"(EF24 IN {'0110','0330','0350','1300','1400','1620','1670','2010','2070','2330',
'2460','2470','2661','2271','3600','3650','3740','3730','3760','5070',
'5180','5200','5290','5335','5386','5572','5574','5580','5600',
'5870','5903','6209','6283','6250','6310','6420','6450','6500','6880',
'6920','6940','7000','7200','7640','7650','7660','7800','8042','8043',
'8121','8122','8130','8160' })
ODER
(EF24 IN {'2271'} UND EF29 < '2018')";"Fehler - maschinelle Korrektur";"1";"PSEUDONYMMERKMAL: Diese Prüfung muss mit Studierenden- und Prüfungsstatistik identisch sein zwecks Pseudonymerstellung für Studienverläufe. Auszug Protokoll Referentenbesprechung: Das Statistische Bundesamt erläutert, das für alle Hochschulen, die im Sommersemester 2017 nicht mehr bestehen, für die Hochschule der Ersteinschreibung der Schlüssel „9000“ (sonstige deutsche Hochschule) zu verwenden ist. Dagegen müssen Hochschulen, die ab dem Sommersemester 2017 stillgelegt werden, bezüglich der Hochschule der Ersteinschreibung weiterhin mit dem ehemaligen, aktuell aber nicht mehr gültigen Schlüssel signiert werden. Das Statistische Bundesamt erörtert mit dem für DAHStat zuständigen HSL, wie diese Anforderung im Schlüsselverzeichnis umgesetzt bzw. in der PL verhindert werden kann, dass Schlüssel für ehemalige Hochschulen bei der Verschlüsselung der aktuelle Hochschule verwendet werden.";"Wenn die Hochschule der vorangegangenen Abschlussprüfung aufgelöst wurde, wird der Signierschlüssel 9000 eingesetzt.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"11";"MA_011";"";"EF24 IN {'0070','0090','0091','0092','0122','0123','0124','0210','0220','0230','0250','0280','0290','0303','0320','0340',
'0381','0382','0400','0410','0420','0430','0440','0450','0460','0470','0480','0531','0532','0550','0561','0562','0570','0600',
'0610','0810','0851','0852','0853','0990','0991','0992','0993','1070','1229','1310','1320','1387','1388','1630','1640','1650',
'1720','1860','2090','2110','2120','2140','2160','2250','2260','2310','2340','2400','2480','2562','2563','2662','2680','2751',
'2780','2820','2840','2910','2970','3012','3110','3150','3160','3170','3180','3190','3200','3210','3220','3280','3300','3310',
'3320','3330','3340','3350','3380','3390','3400','3410','3420','3450','3460','3470','3480','3510','3520','3531','3532','3540',
'3551','3552','3553','3560','3570','3580','3581','3582','3583','3590','3610','3620','3630','3690','3712','3750','3770','3800',
'3810','3820','3830','3840','3850','3860','3870','3920','3960','5021','5022','5023','5024','5025','5026','5027','5028','5031',
'5032','5033','5040','5301','5302','5303','5304','5305','5320','5331','5332','5333','5334','5340','5360','5370','5383','5384',
'5390','5421','5422','5441','5442','5450','5462','5463','5481','5482','5490','5502','5510','5520','5530','5540','5550','5560',
'5571','5573','5590','5610','5620','5630','5640','5650','5740','5750','5760','5790','5811','5812','5850','5880','5900','5910',
'5920','5930','5940','5950','5960','5970','6010','6020','6040','6050','6060','6073','6078','6079','6080','6090','6100','6110',
'6120','6130','6140','6150','6160','6170','6201','620A','6242','6260','6300','6341','6350','6440','6460','6470','6480','6490',
'6520','6550','6561','6562','6570','6580','6651','6652','6871','6872','6930','6950','6960','6980','6990','7030','7040','7080',
'7100','7130','7150','7160','7170','7191','7192','7221','7222','7230','7340','7353','7360','7371','7373','7380','7390','7400',
'7410','7441','7442','7470','7480','7490','7500','7510','7520','7530','7711','7712','7713','7714','7720','7740','7760','7770',
'7861','7862','7863','7870','8041','8044','8050','8070'}";"Fehler - maschinelle Korrektur";"1";"PSEUDONYMMERKMAL: Diese Prüfung muss mit Studierenden- und Prüfungsstatistik identisch sein zwecks Pseudonymerstellung für Studienverläufe. Diese Prüfung muss mit Studierenden- und Prüfungsstatistik identisch sein zwecks Pseudonymerstellung für Studienverläufe. Auszug Protokoll Referentenbesprechung: Das Statistische Bundesamt erläutert, das für alle Hochschulen, die im Sommersemester 2017 nicht mehr bestehen, für die Hochschule der Ersteinschreibung der Schlüssel „9000“ (sonstige deutsche Hochschule) zu verwenden ist. Dagegen müssen Hochschulen, die ab dem Sommersemester 2017 stillgelegt werden, bezüglich der Hochschule der Ersteinschreibung weiterhin mit dem ehemaligen, aktuell aber nicht mehr gültigen Schlüssel signiert werden. Das Statistische Bundesamt erörtert mit dem für DAHStat zuständigen HSL, wie diese Anforderung im Schlüsselverzeichnis umgesetzt bzw. in der PL verhindert werden kann, dass Schlüssel für ehemalige Hochschulen bei der Verschlüsselung der aktuelle Hochschule verwendet werden.";"Wenn die Hochschule der vorangegangenen Abschlussprüfung in eine andere Hochschule eingegliedert wurde, wird der Signierschlüssel der neuen Hochschule eingesetzt.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"12";"MA_012";"";"(EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF6U1 = LEER)";"Fehler - maschinelle Korrektur";"1";"";"Wenn kein Geburtstag angegeben wurde, wird nach Abschluss der Aufbereitung EF6U1 = '01' und EF38 = .b. (auf die zweite Satzstelle) gesetzt.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"13";"MA_013";"";"(EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF6U2 = LEER)";"Fehler - maschinelle Korrektur";"1";"";"Wenn kein Geburtsmonat angegeben wurde, wird nach Abschluss der Aufbereitung EF6U2 = '07' und EF38 = ..c (auf die dritte Satzstelle) gesetzt.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"14";"MA_014";"";"(EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF10 = LEER)";"Fehler - maschinelle Korrektur";"1";"";"Wenn keine Art der Promotion angegegeben wurde, wird nach Abschluss der Aufbereitung EF10 = '01' und EF35 = a.. (auf die erste Satzstelle) gesetzt.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"15";"MA_016";"";"(EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF13U1 = LEER)";"Fehler - maschinelle Korrektur";"1";"";"Wenn kein Monat als Beginn der Promotion angegegeben wurde, wird nach Abschluss der Aufbereitung EF13U1 = '01' und EF35 = ..c (auf die dritte Satzstelle) gesetzt.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"16";"MA_017";"";"(EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF13U2 = LEER)";"Fehler - maschinelle Korrektur";"1";"";"Wenn kein Jahr als Beginn der Promotion angegeben wurde, wird nach Abschluss der Aufbereitung EF13U2 in Abhängigkeit von EF12 gesetzt, zudem wird EF35 = ..c (auf die dritte Satzstelle) gesetzt.";"wenn EF12 = '3' = EF13U2 ='2024'
wenn EF12 = '4 oder 6' = EF13U2 ='2025'
wenn EF12 = '5' = EF13U2 ='2021''";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"17";"MA_018";"";"(EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF15 = LEER)";"Fehler - maschinelle Korrektur";"1";"";"Wenn Immatrikulation nicht angegegeben wurde, wird nach Abschluss der Aufbereitung EF15 = '0' gesetzt, zudem wird EF36 = a.. (auf die erste Satzstelle) gesetzt.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"18";"MA_019";"";"(EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF16 = LEER)";"Fehler - maschinelle Korrektur";"1";"";"Wenn strukt. Promotionsprogramm nicht angegegeben wurde, wird nach Abschluss der Aufbereitung EF16 = '0' gesetzt, zudem wird EF36 = .b. (auf die zweite Satzstelle) gesetzt.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"19";"MA_020";"";"(EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF17 = LEER)";"Fehler - maschinelle Korrektur";"1";"";"Wenn nicht angegeben wurde, ob ein Beschäftigungsverhältnis an der Hochschule besteht, wird nach Abschluss der Aufbereitung EF17 = '0' gesetzt, zudem wird EF36 = ..c (auf die dritte Satzstelle) gesetzt.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"20";"MA_021";"";"(EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF18 = LEER)";"Fehler - maschinelle Korrektur";"1";"";"Wenn die Art der Dissertation nicht angegegeben wurde, wird nach Abschluss der Aufbereitung EF18 = '1' gesetzt, zudem wird EF37 = a.. (auf die erste Satzstelle) gesetzt.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"21";"MA_022";"";"(EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF19 = LEER ODER EF21 = LEER ODER EF22 = LEER)";"Fehler - maschinelle Korrektur";"1";"";"Wenn eine Angabe zur Ersteinschreibung (EF19-EF22) nicht angegegeben wurde, dann wird nach Abschluss der Aufbereitung EF19 = 9000, EF21 = 1 und EF 22 = EF31 gesetzt. Falls EF31 = leer und EF29 ungleich leer, dann wird EF22 = EF29 gesetzt. Falls EF31 und EF29 leer, dann wird EF22 = EF13U2 gesetzt. Zudem wird EF37 = .b. (auf die zweite Satzstelle) gesetzt.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"22";"MA_023";"";"(EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND
(EF23 IN {LEER,'1'} UND (EF24 = LEER ODER EF26 = LEER ODER EF27 = LEER ODER EF28 = LEER ODER EF29 = LEER ODER EF30 = LEER))";"Fehler - maschinelle Korrektur";"1";"";"Wenn eine Angabe zur prom. Abschlussprüfung (EF23-EF30) nicht angegegeben wurde, dann wird nach Abschluss der Aufbereitung EF23 = 1, EF24 = 9000, EF26 = 102, EF27 = 004, EF28 = 01, EF 29 = EF22, EF 30= 8 gesetzt, zudem wird EF37 = ..c (auf die dritte Satzstelle) gesetzt.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"23";"MA_024";"";"(EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF31 = LEER ODER EF32 = LEER ODER EF33U1 = LEER ODER EF33U2 = LEER)";"Fehler - maschinelle Korrektur";"1";"";"Wenn eine Angabe zur HZB (EF31-EF33) nicht angegegeben wurde, dann wird nach Abschluss der Aufbereitung EF31 = EF22, EF32 = 03 und EF 33 = 98999 gesetzt, zudem wird EF38 = a.. (auf die erste Satzstelle) gesetzt.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"24";"SIG_001";"";"(EF3 IN {'0081', '0089', '0261', '0269', '0271', '0279', '0309', '0311', '0319', '0361', '0369', '0371',
'0379', '0491', '0499', '0640', '0650', '0950', '1001', '1011', '1021', '1029', '1031', '1039', '1081', '1089',
'1091', '1099', '1101', '1109', '1111', '1119', '1121', '1129', '1161', '1169', '1241', '1249', '1251', '1258',
'1259', '1271', '1279', '1293', '1319', '1321', '1329', '1331', '1339', '1341', '1349', '1361',
'1362', '1369', '1378', '1379', '1390', '1481', '1489', '1491', '1499', '1639', '1731', '1739',
'1821', '1829', '5021', '5022', '5024', '5025', '5026', '5027', '5028', '5150', '5160', '6245', '7467', '8100'})
ODER
(EF19 IN {'0081', '0089', '0261', '0269', '0271', '0279', '0309', '0311', '0319', '0361', '0369', '0371',
'0379', '0491', '0499', '0640', '0650', '0950', '1001', '1011', '1021', '1029', '1031', '1039', '1081', '1089',
'1091', '1099', '1101', '1109', '1111', '1119', '1121', '1129', '1161', '1169', '1241', '1249', '1251', '1258',
'1259', '1271', '1279', '1293', '1319', '1321', '1329', '1331', '1339', '1341', '1349', '1361',
'1362', '1369', '1378', '1379', '1390', '1481', '1489', '1491', '1499', '1639', '1731', '1739',
'1821', '1829', '5021', '5022', '5024', '5025', '5026', '5027', '5028', '5150', '5160', '6245', '7467', '8100'})
ODER
(EF24 IN {'0081', '0089', '0261', '0269', '0271', '0279', '0309', '0311', '0319', '0361', '0369', '0371',
'0379', '0491', '0499', '0640', '0650', '0950', '1001', '1011', '1021', '1029', '1031', '1039', '1081', '1089',
'1091', '1099', '1101', '1109', '1111', '1119', '1121', '1129', '1161', '1169', '1241', '1249', '1251', '1258',
'1259', '1271', '1279', '1293', '1319', '1321', '1329', '1331', '1339', '1341', '1349', '1361',
'1362', '1369', '1378', '1379', '1390', '1481', '1489', '1491', '1499', '1639', '1731', '1739',
'1821', '1829', '5021', '5022', '5024', '5025', '5026', '5027', '5028', '5150', '5160', '6245', '7467', '8100'})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Signierschlüssel der Hochschule ist nur bei der Personal- und Stellenstatistik zulässig.";"Bei der aktuellen Hochschule (EF3) ,der Hochschule der Ersteinschreibung (EF19) oder der Hochschule der zur Promotion berechtigende, vorangegangenen Abschlussprüfung (EF24) steht ein Signierschlüssel der nur bei der Hochschulpersonalstatistik zulässig ist.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"25";"SIG_002";"";"NICHT EF3 IN {'0011', '0012', '0013', '0014',
'0080', '0082', '0121', '0130', '0140', '0150',
'0180', '0190', '0200',
'0260', '0270', '0301', '0302', '0310', '0360',
'0370', '0372', '0373', '0380', '0390', '0490',
'0500', '0510', '0511',
'0520', '0530', '0540', '0551', '0552', '0560',
'0580', '0590', '0620', '0630', '0660', '0670',
'0680', '0690',
'0800', '0811', '0812', '0910', '0960', '0980',
'0990', '1000', '1010', '1020', '1030', '1040',
'1050', '1060', '1080',
'1090', '1100', '1110', '1120', '1130', '1140',
'1150', '1160', '1170', '1180', '1190', '1200',
'1210', '1211', '1221',
'1222', '1230', '1240', '1250', '1252', '1260',
'1270', '1291', '1292', '1311', '1312', '1322',
'1323', '1330',
'1340', '1350', '1360', '1380', '1430', '1440',
'1450', '1460', '1480', '1490', '1530', '1541',
'1542', '1580',
'1590', '1631', '1632', '1633', '1634', '1690',
'1700', '1730', '1740', '1800', '1810', '1820',
'1960', '2000',
'2020', '2030', '2040', '2050', '2060', '2170',
'2200', '2271', '2272', '2300', '2420', '2430',
'2500', '2530', '2550', '2561',
'2571', '2572', '2573', '2574', '2581', '2582',
'2583', '2590', '2600', '2610', '2620', '2630', '2640',
'2650', '2660',
'2670', '2690', '2700', '2710', '2720', '2730',
'2740', '2760', '2770', '2790', '2800', '2810',
'2830', '2850',
'2860', '2870', '2880', '2890', '2920', '2940',
'2950', '2960', '2980', '3011', '3030', '3100',
'3370', '3500',
'3660', '3670', '3680', '3700', '3711', '3780', '3930', '3940',
'3950', '3971', '3972', '3980', '3990', '4730', '4740', '4750', '4760', '4770',
'4780', '4790', '4800',
'4810', '4820', '4830', '4840', '4850', '4860', '4870',
'4880', '4890', '4900',
'4910', '4920', '4930', '5080',
'6211', '6212',
'6220', '6231', '6232', '6233', '6243', '6244',
'6290', '6370', '7960', '8000', '8011', '8012',
'8021', '8022',
'8031', '8032', '8033'}";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Die meldende Hochschule (EF3) hat kein Promotionsrecht";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"26";"SIG_003";"";"FUNKTION WERTLAENGE(EF4) < 6 ODER
FUNKTION WERTLAENGE(EF4) > 12";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Paginiernummer (EF4) ist 000001 bis 999999 (mindestens 6 Stellen, maximal 12 Stellen)";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"27";"SIG_004";"";"FUNKTION WERTLAENGE (EF5) /= 1
ODER
NICHT &NUMERISCH (EF5)
ODER
NICHT EF5 IN {'1','2', '3', '4'}";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Geschlecht (EF5) ist ungleich 1, 2 ,3 oder 4.";"Geschlecht (EF5) ungleich 1, 2 ,3 oder 4. Stand der PL Klassen vom 26.02.2026";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"28";"SIG_005";"";"(FUNKTION WERTLAENGE (EF6U1) /= 2)
ODER
((NICHT &NUMERISCH (EF6U1) ODER (EF6U2 IN
{01,03,05,07,08,10,12} UND NICHT EF6U1 IN
{01,02..31}))
ODER
(NICHT &NUMERISCH (EF6U1) ODER (EF6U2 IN
{04,06,09,11} UND NICHT EF6U1 IN {01,02..30}))
ODER
(NICHT &NUMERISCH (EF6U1) ODER (EF6U2 IN {02} UND
NICHT EF6U1 IN {01,02..29}))
ODER
(NICHT &NUMERISCH (EF6U1) ODER (EF6U2 IN {02} UND
EF6U1 IN {29} UND NICHT EF6U3 IN
{1912,1916,1920,1924,1928,1932,1936,1940,1944,1948,1952,1956,1960,
1964,1968,1972,1976,1980,1984,1988,1992,1996,2000
,2004,2008,2012,2016,2020,2024})))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Angabe zum Geburtstag (EF6U1) ist in Abhängigkeit mit dem Geburts-Monat ungleich 01 bis 31.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"29";"SIG_006";"";"(FUNKTION WERTLAENGE (EF6U2) /= 2)
ODER
(NICHT &NUMERISCH (EF6U2) ODER NICHT EF6U2 IN
{01,02..12})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Angabe Geburtsmonat (EF6U2) ungleich 01 bis 12.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"30";"SIG_007";"";"(FUNKTION WERTLAENGE (EF6U3) /= 4)
ODER
(NICHT &NUMERISCH (EF6U3) ODER NICHT EF6U3 IN
{1912,1913..2020})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Angabe Geburtsjahr (EF6U3) kleiner Wert ""1912"".";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"31";"SIG_008";"";"FUNKTION WERTLAENGE (EF7) /= 4
ODER
(FUNKTION WERTLAENGE (EF7) = 4 UND
NICHT (&TEIL (EF7,1,1) IN
{'A','a','B','b','C','c','D','d','E','e','F','f',
'G','g',
'H','h','I','i','J','j','K','k','L','l','M','m','N','n',
'O','o','P','p','Q','q','R','r','S','s','T','t','U','u',
'V','v','W','w','X','x','Y','y','Z','z'}))
ODER
(FUNKTION WERTLAENGE (EF7) = 4 UND
NICHT (&TEIL (EF7,2,1) IN
{'A','a','B','b','C','c','D','d','E','e','F','f',
'G','g',
'H','h','I','i','J','j','K','k','L','l','M','m','N','n',
'O','o','P','p','Q','q','R','r','S','s','T','t','U','u',
'V','v','W','w','X','x','Y','y','Z','z',' '}))
ODER
(FUNKTION WERTLAENGE (EF7) = 4 UND
NICHT (&TEIL (EF7,3,1) IN
{'A','a','B','b','C','c','D','d','E','e','F','f',
'G','g',
'H','h','I','i','J','j','K','k','L','l','M','m','N','n',
'O','o','P','p','Q','q','R','r','S','s','T','t','U','u',
'V','v','W','w','X','x','Y','y','Z','z',' '}))
ODER
(FUNKTION WERTLAENGE (EF7) = 4 UND
NICHT (&TEIL (EF7,4,1) IN
{'A','a','B','b','C','c','D','d','E','e','F','f',
'G','g',
'H','h','I','i','J','j','K','k','L','l','M','m','N','n',
'O','o','P','p','Q','q','R','r','S','s','T','t','U','u',
'V','v','W','w','X','x','Y','y','Z','z',' '}))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Angabe Name (EF7) ist ungleich A bis Z (Groß- und Kleinschreibung). Von Satzstelle 2 bis 4 sind Leerzeichen zulässig.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"32";"SIG_009";"";"(NICHT EF8 IN MATERIAL STAAT (key))
ODER
(EF8 IN {'112','113','114','115','116','182','211','214','216','311','315','316','317','319','321','325','329',
'331','338','341','342','343','344','352','510','511','512','513','514','515','517','519','520','521','522','525','528','529','534','535',
'542','546','547','548','549'})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Signatur Staatsangehörigkeit (EF8) stimmt nicht mit den Einträgen in Schlüsseltabelle STAAT überein.";"Signatur Staatsangehörigkeit (EF8) stimmt nicht mit den Einträgen in Schlüsseltabelle STAAT überein oder es ist ein Signierschlüssel eines abhängigen Gebietes angegeben.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"33";"SIG_010";"";"(EF9 /= LEER UND EF9 = '000')
ODER
""Teil 2""
(EF9 /= LEER UND EF9 = EF8)
ODER
""Teil 3""
(EF9 /= LEER UND NICHT EF9 IN MATERIAL STAAT (key))
ODER
""Teil 4""
(EF9 IN {'112','113','114','115','116','182','211','214','216','311','315','316','317','319','321','325','329',
'331','338','341','342','343','344','352','510','511','512','513','514','515','517','519','520','521','522','525','528','529','534','535',
'542','546','547','548','549'})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Signatur weitere Staatsangehörigkeit (EF9) stimmt nicht mit den Einträgen in Schlüsseltabelle STAAT überein";"Die Signatur der weiteren Staatsangehörigkeit (EF9) ist Deutschland (000) oder die weitere Staaatsangehörigkeit ist gleich der ersten Staatsangehörigkeit oder stimmt nicht mit den Einträgen in Schlüsseltabelle STAAT überein oder es ist ein Signierschlüssel eines abhängigen Gebietes angegeben.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"34";"SIG_011";"";"(EF3 IN {LEER,'9000','9500','9990'} ODER
&fkt_SIG_011() = '0' ODER NICHT (EF1 IN MATERIAL HOCHSCHULSTANDORT (key = &fkt_SIG_011(); bundesland)))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Falsche Signatur bei Hochschulstandort (EF3)";"Die Kombination Berichtsland und Hochschulnummer laut Schlüsseltabelle HOCHSCHULFACHBEREICH in Kombination mit Schlüsseltabelle HOCHSCHULSTANDORT nicht zulässig.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"35";"SIG_012";"";"FUNKTION WERTLAENGE (EF10) /= 2
ODER
NICHT &NUMERISCH (EF10)
ODER
NICHT EF10 IN {'01','02','03','04','05'}";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Art der Promotion (EF10) ungleich 01 bis 05";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"36";"SIG_013";"";"(EF1 IN {'03','04','05','06','07','09','11','12','13','16'}
UND NICHT (EF11 IN MATERIAL STUDIENFACH_LAND (land = EF1; key)))
ODER
(EF1 IN {'01','02','08','10','14','15'}
UND NICHT (EF11 IN MATERIAL STUDIENFACH (key)))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Falsche Signatur beim Promotionsfach (EF11)";"Signatur beim Promotionsfach (EF11) stimmt nicht mit den zulässigen Schlüsseln aus Schlüsseltabelle STUDIENFACH_LAND (Landesinterne Studienfächer) bzw. Schlüsseltabelle STUDIENFACH (Bundesschlüssel) überein.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"37";"SIG_014";"";"FUNKTION WERTLAENGE (EF12) /= 1
ODER
NICHT &NUMERISCH (EF12)
ODER
NICHT EF12 IN {'1','2','3','4','5','6'}";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Art der Registrierung als Promovierender (EF12) ungleich 1 bis 6";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"38";"SIG_015";"";"(FUNKTION WERTLAENGE (EF13U1) /= 2)
ODER
(NICHT &NUMERISCH (EF13U1) ODER NICHT EF13U1 IN
{01,02..12})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Angabe Promotionsbeginn - Monat (EF13U1) ungleich 01 bis 12";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"39";"SIG_016";"";"(FUNKTION WERTLAENGE (EF13U2) /= 4 ODER NICHT
&NUMERISCH (EF13U2)) UND (NICHT EF13U2 IN {1990,1991++EF2})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Angabe Promotionsbeginn - Jahr (EF13U2) ungleich 1990 bis Berichtsjahr (EF2)";"Angabe Promotionsbeginn - Jahr (EF13U2) ungleich 1990 bis Berichtsjahr (EF2).";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"40";"SIG_017";"";"(EF14U1 /= LEER UND FUNKTION WERTLAENGE (EF14U1) /= 2)
ODER
(EF14U1 /= LEER UND NICHT &NUMERISCH (EF14U1))
ODER
(EF12 IN {'5','6'} UND NICHT EF14U1 IN {01,02..12})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Art der Registrierung als Promovierender = 5 (Abschluss der Promotion) oder 6 (Abbruch der Promotion) und Angabe Promotionsende - Monat (EF14U1) ungleich 01 bis 12";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"41";"SIG_018";"";"(EF14U2 /= LEER UND FUNKTION WERTLAENGE (EF14U2) /= 4)
ODER
(EF14U2 /= LEER UND NICHT &NUMERISCH (EF14U2))
ODER
(EF12 IN {'5','6'} UND FUNKTION NUMERISCH (EF2) UND FUNKTION NUMERISCH (EF14U2)
UND
(EF14U2 /= EF2 UND EF14U2 /= EF2 - 1))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Art der Registrierung als Promovierender = 5 (Abschluss der Promotion) oder 6 (Abbruch der Promotion) und falsche Angabe bei Promotionsende - Jahr (EF14U2)";"Art der Registrierung als Promovierender = 5 (Abschluss der Promotion) oder 6 (Abbruch der Promotion) und Angabe Promotionsende - Jahr (EF14U2) ungleich Berichtsjahr oder Berichtsjahr minus 1. Hierbei müssen vorab alle benötigten Felder mit denen gerechnet wird auf numerischen Inhalt geprüft werden.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"42";"SIG_019";"";"FUNKTION WERTLAENGE (EF15) /= 1
ODER
NICHT &NUMERISCH (EF15)
ODER
NICHT EF15 IN {'0','1'}";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Immatrikulation (EF15) ungleich 0 oder 1";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"43";"SIG_020";"";"FUNKTION WERTLAENGE (EF16) /= 1
ODER
NICHT &NUMERISCH (EF16)
ODER
NICHT EF16 IN {'0','1'}";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Teilnahme an einem strukturierten Promotionsprogramm (EF16) ungleich 0 oder 1";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"44";"SIG_021";"";"FUNKTION WERTLAENGE (EF17) /= 1
ODER
NICHT &NUMERISCH (EF17)
ODER
NICHT EF17 IN {'0','1'}";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Beschäftigungsverhältnis an der Hochschule der Promotion (EF17) ungleich 0 oder 1";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"45";"SIG_022";"";"FUNKTION WERTLAENGE (EF18) /= 1
ODER
NICHT &NUMERISCH (EF18)
ODER
NICHT EF18 IN {'1','2'}";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Art der Dissertation (EF18) ungleich 1 oder 2.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"46";"SIG_023";"";"EF19 IN {LEER,'9500'} ODER NICHT (EF19 IN
MATERIAL HOCHSCHULEERSTEINSCHREIBUNG (key))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Fehlende oder falsche Signatur bei Hochschulstandort der Ersteinschreibung (EF19)";"Signatur bei Hochschulstandort der Ersteinschreibung (EF19) ist leer bzw. '9500' (Berufsakademie in Deutschland) oder stimmt nicht mit den Einträgen in Schlüsseltabelle HOCHSCHUEERSTEINSCHREIBUNG überein";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"47";"SIG_024";"";"EF20 /= LEER UND
(EF20 = '000' ODER NICHT (EF20 IN MATERIAL STAAT (key)))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Falsche Signatur beim Staat bei Ersteinschreibung an einer Hochschule im Ausland (EF20)";"Signatur vom Staat bei Ersteinschreibung an einer Hochschule im Ausland (EF20) stimmt nicht mit den Einträgen in Schlüsseltabelle STAAT überein (000 = Deutschland ist nicht zulässig)";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"48";"SIG_025";"";"FUNKTION WERTLAENGE (EF21) /= 1
ODER
NICHT &NUMERISCH (EF21)
ODER
NICHT EF21 IN {'1','2'}";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Semester der Ersteinschreibung (EF21) ist ungleich 1 oder 2";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"49";"SIG_026";"";"(FUNKTION WERTLAENGE (EF22) /= 4 ) ODER
(NICHT &NUMERISCH (EF22)) ODER
(NICHT EF22 IN {1923,1924++EF2})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Jahr der Ersteinschreibung (EF22) ist leer oder ungleich 1923 bis Inhalt aus EF2 (Berichtsjahr)";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"50";"SIG_027";"";"FUNKTION WERTLAENGE (EF23) /= 1
ODER
NICHT &NUMERISCH (EF23)
ODER
NICHT EF23 IN {'0','1'}";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Zur Promotion berechtigende Abschlussprüfung (EF23) ist ungleich 0 oder 1";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"51";"SIG_028";"";"(EF24 /= LEER UND (EF24 IN {'9500'} ODER NICHT (EF24 IN MATERIAL HOCHSCHULFACHBEREICH (key))))
ODER
(FUNKTION NUMERISCH (EF24) UND EF24 IN {4000, 4001,4002..4500})
ODER
(EF24 IN {'409A','409B','409C','409D','409E'})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Falsche Signatur bei der Hochschule der zur Promotion berechtigende, vorangegangenen Abschlussprüfung (EF24)";"Die Signatur der Hochschule der zur Promotion berechtigende, vorangegangenen Abschlussprüfung (EF24) stimmt nicht mit den zulässigen Schlüsseln aus der Schlüsseltabelle HOCHSCHULFACHBEREICH überein oder es wurde eine Signatur einer Berufsakademie angegeben.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"52";"SIG_029";"";"EF25 /= LEER UND
(EF25 = '000' ODER NICHT (EF25 IN MATERIAL STAAT (key)))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Falsche Signatur vom Staat der Hochschule (zur Promotion) außerhalb Deutschlands";"Signatur vom Staat der Hochschule der zur Promotion berechtigende, vorgangenen Abschlussprüfung (EF25)
stimmt nicht mit den Einträgen in Schlüsseltabelle STAAT überein (000= Deutschland ist nicht zulässig)";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"53";"SIG_030";"";"EF26 IN {'186','187'}
ODER
(EF1 IN {'03','05','06','07','09','11'}
UND
(EF26 /= LEER UND NICHT (EF26 IN MATERIAL
ABSCHLUSS3STELLER_LAND (land = EF1; key))))
ODER
(EF1 IN
{'01','02','04','08','10','12','13','14','15','16'} UND
(EF26 /= LEER UND NICHT (EF26 IN MATERIAL
ABSCHLUSS3STELLER (key))))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Falsche Signatur bei der Art der Prüfung (EF26)";"Die Signatur der Art der Prüfung (EF26), bei einer zur Promotion berechtigende bestandenen
Abschlussprüfung, stimmt nicht mit den zulässigen Schlüsseln aus Schlüsseltabelle
ABSCHLUSS3STELLER_LAND (Landesinterne_Abschlussprüfung) bzw.
Schlüsseltabelle ABSCHLUSS3STELLER (Bundesschlüssel) überein.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"54";"SIG_031";"";"(EF1 IN
{'03','04','05','06','07','09','11','12','13','16'} UND
EF27 /= LEER UND NICHT (EF27 IN MATERIAL
STUDIENFACH_LAND (land = EF1; key)))
ODER
(EF1 IN {'01','02','08','10','14','15'} UND
EF27 /= LEER UND NICHT (EF27 IN MATERIAL
STUDIENFACH (key)))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Falsche Signatur beim 1. Studienfach";"Die Signatur beim 1. Studienfach (EF27), bei einer zur Promotion berechtigende bestandene
Abschlussprüfung, stimmt nicht mit den zulässigen Schlüsseln
aus Schlüsseltabelle STUDIENFACH_LAND (Landesinterne
Studienfächer) bzw. Schlüsseltabelle STUDIENFACH
(Bundesschlüssel) überein";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"55";"SIG_032";"";"(EF28 /= LEER UND FUNKTION WERTLAENGE (EF28) /= 2)
ODER
(EF28 /= LEER UND (NICHT &NUMERISCH (EF28)
ODER NICHT EF28 IN {01,02..12}))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Monat der Abschlussprüfung (EF28)";"Angabe des Monats der Abschlussprüfung (EF28), bei einer zur Promotion berechtigende bestandenen
Abschlussprüfung, ist ungleich 01 bis 12";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"56";"SIG_033";"";"(EF29 /= LEER UND FUNKTION WERTLAENGE (EF29) /= 4)
ODER
(EF29 /= LEER UND NICHT &NUMERISCH (EF29))
ODER
(EF29 /= LEER UND NICHT EF29 IN {1923,1924++EF2})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Fehlende oder falsche Signatur bei Jahr der Abschlussprüfung (EF29)";"Angabe Jahr der Abschlussprüfung (EF29), bei einer zur Promotion berechtigende bestandenen
Abschlussprüfung, ist nicht 1923 bis Berichtsjahr";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"57";"SIG_034";"";"(EF30 /= LEER UND FUNKTION WERTLAENGE (EF30) /= 1)
ODER
(EF30 /= LEER UND (NICHT &NUMERISCH (EF30)
ODER
NICHT EF30 IN
{'0','1','2','3','4','7','8'}))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Falsche Signatur Gesamtnote (EF30)";"Die Signatur der Prüfungsnote (EF30), bei einer zur Promotion berechtigende bestandenen Abschlussprüfung,
ist ungleich 0, 1, 2, 3, 4, 7, 8";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"58";"SIG_035";"";"((FUNKTION WERTLAENGE (EF31) /= 4)
ODER
(NICHT &NUMERISCH (EF31) ODER NICHT EF31 IN
{1923,1924++EF2}))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Fehlende oder falsche Signatur bei Jahr des Ewerbs der HZB (EF31)";"Die Signatur des Jahres des Erwerbs der HBZ (EF31), ist ungleich 1923 bis Berichtsjahr";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"59";"SIG_036";"";"NICHT (EF32 IN MATERIAL HZBART (key))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Fehlende oder falsche Signatur bei Art der HZB (EF32)";"Die Signatur der Art der HZB (EF32) fehlt oder stimmt nicht
mit den Schlüsseln aus der Schlüsseltabelle HZBART
überein.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"60";"SIG_037";"";"NICHT (EF33U1 IN MATERIAL BUNDESLAND (key))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Fehlende oder falsche Signatur bei Land des Erwerbs der HZB (EF33U1)";"Die Signatur Land des Erwerbs der HZB (EF33U1) fehlt
oder stimmt nicht mit den Schlüsseln aus der
Schlüsseltabelle BUNDESLAND überein.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"61";"SIG_038";"";"((FUNKTION WERTLAENGE (EF33U2) /= 3)
ODER
(NICHT &NUMERISCH (EF33U2) ODER NICHT EF33U2 IN
{000,001..999}))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Fehlende oder falsche Signaturbei Kreis bzw. Staat des Erwerbs der HZB (EF33U2)";"Die Signatur Kreis bzw. Staat des Erwerbs der HZB
(EF33U2) fehlt oder stimmt nicht mit den Schlüsseln
000,001..999 überein.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"62";"UF_001M";"";"(EF6U2 <'12' UND FUNKTION NUMERISCH (EF2) UND
FUNKTION NUMERISCH (EF6U3)
UND (FUNKTION ALS_GANZZAHL (EF2) - FUNKTION
ALS_GANZZAHL (EF6U3)) <20)
ODER
(EF6U2 = '12' UND FUNKTION NUMERISCH (EF2) UND
FUNKTION NUMERISCH (EF6U3)
UND (FUNKTION ALS_GANZZAHL (EF2) - FUNKTION
ALS_GANZZAHL (EF6U3)-1) <20)";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Promovierender jünger als 20";"Promovierende sind jünger als 20 Jahre.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"63";"UF_003M";"";"(EF2 > '2017' UND EF12 = '1' UND EF13U1 < '12' UND EF13U2 /= LEER UND EF13U2 < EF2)
ODER
(EF2 > '2017' UND EF12 = '1' UND EF13U1 = '12' UND EF13U2 /= LEER UND EF13U2 < (EF2 - 1))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Bei Erstregistrierung ist das Jahr des Promotionsbeginns kleiner als das Berichtsjahr.";"Ein Erstregistrierter mit Promotionsbeginn in den Monaten Januar-November, darf kein Berichtsjahr kleiner als das Jahr des Promotionsbeginns aufweisen.Ausnahme sind Erstregistrierte im Dezember, bei denen darf die Abweichung bei maximal minus 1 Jahr liegen.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"64";"UF_004K";"";"EF12 = '2' UND EF13U2 = EF2";"Prüfhinweis - manuelle Korrektur (""Kannfehler"")";"1";"";"Bei Neuregistrierung ist das Jahr des Promotionsbeginns gleich dem Berichtsjahr";"Bei Neuregistrierung ist das Jahr des Promotionsbeginns gleich dem Berichtsjahr. Promotionsbeginn gleich Berichtsjahr EF13U2=BJ kann auch bei Neuregistrierten vorkommen, z.B. wenn hier eine zweite Promotion begonnen wird, nach einer ersten erfolgreich beendeten Promotion. Da dies aber nicht den Regelfall darstellt (häufiger sind vsl. Hochschulwechsler mit Promotionsbeginnen vor dem Berichtsjahr, ist hier zumindest ein Kann-Fehler vorgesehen.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"65";"UF_005M";"";"EF12 = '3' UND EF13U2 = EF2";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Bei Registrierung als aktive Fortsetzung ist das Jahr des Promotionsbeginn gleich dem Berichtsjahr";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"66";"UF_006M";"";"EF13U2 > EF2 UND EF13U2 /= LEER";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Jahr des Promotionsbeginns liegt nach dem Berichtsjahr";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"67";"UF_007M";"";"(EF2 >= '2018' UND EF13U2 > EF14U2)";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Jahr des Promotionsbeginns ist größer als das Jahr des Promotionsendes";"Ab 2018 : Jahr des Promotionsbeginns ist größer als das Jahr des Promotionsendes.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"68";"UF_008M";"";"(EF1 /= {'09'} UND EF3 /= {'1240','0180'} UND EF29 /= LEER UND (EF13U2 <(EF29 - 2)) UND NICHT EF11 IN {'107', '185'})
ODER
(EF3 = {'1240'} UND EF29 /= LEER UND (EF13U2 <(EF29 - 2)) UND NICHT EF11 IN {'107','185','135'})
ODER
(EF3 = {'0180'} UND EF29 /= LEER UND (EF13U2 <(EF29 - 2)) UND NICHT EF11 IN {'107','185','E10','E11'})
ODER
(EF1 = {'09'} UND EF3 /= {'1322'} UND EF29 /=LEER UND (EF13U2 < (EF29 - 2)) UND NICHT EF11 IN
{'107', '185', 'a47', 'a58', 'a80', 'a81', 'a82',
'a83', 'a84', 'b59', 'b68', 'g05', 'g21', 'g73',
'h32', 'h36', 'i74'})
ODER
(EF3 = {'1322'} UND EF29 /= LEER UND (EF13U2 <(EF29 - 2)) UND NICHT EF11 IN {'156', '021',
'107', '185', 'a47', 'a58', 'a80', 'a81', 'a82',
'a83', 'a84', 'b59', 'b68', 'g05', 'g21', 'g73',
'h32', 'h36', 'i74'})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Der Promotionsbeginn darf bei Promotionen mit Ausnahme der Medizinpromotionen zeitlich maximal 2 Jahre vor dem Erwerb des promotionsberechtigenden Abschlusses liegen.";"Ausnahmen HS Bayern (Landesinterne Schlüssel für
Medizinpromotionen ergänzt), HS 1322 (Tiermedizin und BWL), HS 0180 (Landesinterne Schlüssel für
Medizinpromotionen ergänzt).";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"69";"UF_009M";"";"EF14U1 /= 12 UND EF14U2 /= LEER UND EF14U2 <= (EF2 - 1)";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Das Promotionsende liegt mehr als 1 Kalenderjahr vor dem Berichtsjahr.";"Das aktuelle Berichtsjahr erfasst abgeschlossene Promotionen von Dezember des Vorjahres bis Dezember des Berichtsjahres. Der Fehler dient der Vermeidung von Doppelmeldungen von abgeschlossenen Promotionen.
Es ist zu klären, ob die abgeschlossenen Promotionen bereits im vergangenen Berichtsjahr gemeldet wurden.
Wurden die abgeschlossenen Promotionen im vergangenen Berichtsjahr gemeldet, sind diese nicht erneut für das aktuelle Berichtsjahr zu melden, d.h. zu löschen.
Wurden die Meldungen jedoch im vergangenen Berichtsjahr versehentlich nicht gemeldet, ist EF14U1 = 12 (Monat des Abschlusses) zu setzen.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"70";"UF_010M";"";"EF14U2 > EF2";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Das Promotionsende liegt zeitlich nach dem Berichtsjahr.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"71";"UF_011M";"";"NICHT EF12 IN {'6'} UND EF14U2 /= LEER UND EF29 = LEER";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Bei Abschluss der Promotion fehlt das Jahr des Prüfungsabschlusses der zur Promotion berechtigende Abschlussprüfung, obwohl das Jahr des Promotionsende angegeben ist.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"72";"UF_012M";"";"NICHT EF12 IN {'6'} UND EF14U2 < EF29 UND EF14U2 /= LEER";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Bei Abschluss der Promotion liegt das Jahr des Promotionsende vor dem Jahr des Prüfungsabschlusses der zur Promotion berechtigende Abschlussprüfung.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"73";"UF_013M";"";"(EF14U1 /= LEER ODER EF14U2 /= LEER) UND NICHT EF12 IN {'5','6'}";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Angaben zum Promotionsende sind vorhanden, es fehlt bei Art der Registrierung die Angabe ob Abschluss oder Abbruch der Promotion vorliegt";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"74";"UF_014M";"";"((EF6U2 < '12' UND EF22 /= LEER UND FUNKTION
NUMERISCH (EF6U3) UND FUNKTION NUMERISCH (EF22)
UND
(FUNKTION ALS_GANZZAHL (EF22) - FUNKTION
ALS_GANZZAHL (EF6U3)) <11)
ODER
(EF6U2 = '12' UND EF22 /= LEER UND FUNKTION
NUMERISCH (EF6U3) UND FUNKTION NUMERISCH (EF22)
UND
(FUNKTION ALS_GANZZAHL (EF22) - FUNKTION
ALS_GANZZAHL (EF6U3) -1) <11))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Bei der Ersteinschreibung war der Promovierende jünger als 11 Jahre.";"Bei der Ersteinschreibung war der Promovierende jünger als 11 Jahre.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"75";"UF_015K";"";"(EF6U2 < '12' UND EF22 /= LEER UND FUNKTION NUMERISCH (EF6U3) UND FUNKTION NUMERISCH (EF22) UND
((FUNKTION ALS_GANZZAHL(EF22) - FUNKTION ALS_GANZZAHL(EF6U3)) >= 11) UND
((FUNKTION ALS_GANZZAHL(EF22) - FUNKTION ALS_GANZZAHL(EF6U3)) <= 16))
ODER
(EF6U2 = '12' UND EF22 /= LEER UND FUNKTION NUMERISCH (EF6U3) UND FUNKTION NUMERISCH (EF22) UND
((FUNKTION ALS_GANZZAHL(EF22) - FUNKTION ALS_GANZZAHL(EF6U3) -1) >= 11) UND
((FUNKTION ALS_GANZZAHL(EF22) - FUNKTION ALS_GANZZAHL(EF6U3) -1) <= 16))";"Prüfhinweis - manuelle Korrektur (""Kannfehler"")";"1";"";"Bei der Ersteinschreibung war der bzw. die Promovierende zwischen 11 und 16 Jahre alt.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"76";"UF_016M";"";"((EF23 /= 0) UND (EF29 <= EF22) UND (EF19 /= '9990') UND (EF29 /= LEER) ODER (EF23 /= 0) UND (EF29 <= EF22) UND (EF19 = '9990') UND (EF12 =1) UND (EF29 /= LEER))
UND (EF37 /= {' b ', 'ab ', ' c','abc','a c',' bc'} )";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Das Jahr des Prüfungsabschlusses liegt vor oder im Jahr der Ersteinschreibung";"Jahr der promotionsberechtigenden Abschlussprüfung (EF29) liegt vor dem Jahr oder im Jahr der Ersteinschreibung als Studierender (EF22).
Bei Ersteinschreibung in Deutschland: Jahr der promotionsberechtigenden Abschlussprüfung liegt vor bzw. ist gleich dem Jahr der Ersteinschreibung.
Bei Ersteinschreibung im Ausland: Hier wird nur bei Erstregistrierungen (EF12 =1) geprüft, ob das Jahr der promotionsberechtigenden Abschlussprüfung vor oder im dem Jahr der Ersteinschreibung liegt.
Der Mussfehler wird nicht ausgelöst, wenn eines der beiden Felder durch eine maschinelle Einsetzung befüllt wurde.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"77";"UF_017M";"";"((EF19 /= LEER UND EF19 /= '9990') UND EF20 /= LEER)
ODER
(EF19 = '9990' UND EF20 = LEER)
ODER
(EF20 /= LEER UND EF19 /= '9990')";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Angaben zur Hochschule der Ersteinschreibung und Staat der Ersteinschreibung (Ausland) passen nicht zusammen.";"Hochschulstandort der Ersteinschreibung ist in Deutschland und EF20 (Bei Ersteinschreibung an einer Hochschule außerhalb Deutschlands, der Staat der Hochschule) ist ein Staat angegeben ODER Hochschulstandort der Ersteinschreibung ist 9990 (Ausland) und EF20 (Bei Ersteinschreibung an einer Hochschule außerhalb Deutschlands, der Staat der Hochschule) ist LEER.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"78";"UF_018M";"";"EF12 = '5' UND EF23 = '0'";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Abschluss der Promotion ist angegeben (EF12 = 5), aber es liegt kein zur Promotion berechtigender, vorangegangener Abschluss vor.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"79";"UF_019M";"";"EF23 = '1'
UND
(EF24 = LEER ODER EF26 = LEER ODER EF27 = LEER ODER EF28 = LEER ODER EF29 = LEER ODER EF30 = LEER)";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Promotionsberechtigender Abschluss liegt vor, aber es fehlen Angaben dazu.";"Eine zur Promotion berechtigende, vorangegangene bestandene Abschlussprüfung liegt vor, aber die Angaben zur Hochschule der Abschlussprüfung für Promotion, Staat der Hochschule der Abschlussprüfung für Promotion, Art der Abschlussprüfung für Promotion, zum 1. Studienfach, zum Monat des Prüfungsabschlusses, Jahr des Prüfungsabschlusses für Promotion und Gesamtnote sind nicht vollständig vorhanden.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"80";"UF_020M";"";"EF23 = '1' UND EF30 = '9'";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Die Signatur der Prüfungsnote (EF30), bei einer zur Promotion berechtigende Abschlussprüfung ist gleich ""9"" (nicht bestanden).";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"81";"UF_021M";"";"NICHT EF1 IN {'02','09','14'} UND NICHT EF24 IN {'1110','1330','0530','5501','5503','5312','5313', '5314', '5315'}
UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3
UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,98,99})))
ODER
EF1 IN {'09','14'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3
UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,88,98,99})))
ODER
EF1 IN {'02'} UND EF27 /= '135' UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3
UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,98,99})))
ODER
EF1 IN {'02'} UND EF27 = '135' UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3
UND NICHT (&TEIL (EF26,2,2) IN {01,02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,68,69,78,82,88,93,98,99})))
ODER
EF24 IN {'1330'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3
UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,88,94,98,99})))
ODER
EF24 IN {'0530'} UND NICHT EF27 IN {'042','135','764'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3
UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,98,99})))
ODER
EF24 IN {'0530'} UND EF27 IN {'042','135','764'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3
UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,82,88,98,99})))
ODER
EF24 IN {'5501','5503'} UND NICHT EF27 IN {'042'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3
UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,98,99})))
ODER
EF24 IN {'5501','5503'} UND EF27 IN {'042'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3
UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,84,90,98,99})))
ODER
EF24 IN {'5312','5313', '5314', '5315'} UND NICHT EF27 IN {'042','673','768'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3
UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,98,99})))
ODER
EF24 IN {'5312','5313', '5314', '5315'} UND EF27 IN {'042','673','768'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3
UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,84,90,98,99})))
ODER
EF24 IN {'1110'} UND NICHT EF27 IN {'135', '593'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3
UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,98,99})))
ODER
EF24 IN {'1110'} UND EF27 IN {'135', '593'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3
UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,88,98,99})))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Die nur bei Staats- und Magisterprüfungen zulässige Gesamtnote 7 kommt auch bei anderen Abschlüssen vor.";"Die nur bei Staats- und Magisterprüfungen zulässige Gesamtnote 7 kommt auch bei anderen Abschlüssen vor (Teil 1 der Kontrolle gilt nicht für Bayern, Sachsen, und Hamburg und nicht für die Hochschulen U Osnabrück, Hochschule Osnabrück mit allen Standorten und die Hochschule Braunschweig Wolfenbüttel mit allen Standorten und die Universität Köln). In Bayern und Sachsen ist die Gesamtnote 7 auch bei Abschluss ""88"" Master an Universitäten (Abschluss vorausgesetzt) zulässig (Teil 2 der Kontrolle). In Hamburg ist im Studienfach Rechtswissenschaft die Gesamtnote 7 auch bei Universitätsbachelor (68,01,93,82) und Universitätsmaster (69,78,88) zulässig (Teil 3 und 4 der Kontrolle). An der Uni Würzburg ist die Gesamtnote 7 zusätzlich auch bei Abschluss ""94"" Abschlusszeugnis/Zertifikat zulässig (Teil 5 der Kontrolle). Teil 6 und 7 ist für die U Osnabrück. Hier ist bei den Fächern 042, 135 und 764 auch bei den Abschlüssen 82 und 88 die Gesamtnote 7 zulässig. Teil 8 und 9 ist für die Hochschule Osnabrück mit allen Standorten. Hier ist bei dem Fach 042 auch bei den Abschlüssen 84 und 90 die Gesamtnote 7 zulässig. Teil 10 und 11 ist für die Hochschule Braunschweig Wolfenbüttel mit allen Standorten. Hier ist bei den Fächern 042, 673 und 768 auch bei den Abschlüssen 84 und 90 die Gesamtnote 7 zulässig. Teil 12 und 13 ist für die Universität Köln. Hier ist bei den Fächern 135 und 593 auch bei dem Abschluss 88 die Gesamtnote 7 zulässig.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"82";"UF_022K";"";"EF32 IN {'33','52','77'} UND
((EF6U2 < '12' UND EF31 /= LEER UND FUNKTION NUMERISCH (EF6U3) UND FUNKTION NUMERISCH (EF31) UND
((FUNKTION ALS_GANZZAHL(EF31) - FUNKTION ALS_GANZZAHL(EF6U3)) >= 11) UND
((FUNKTION ALS_GANZZAHL(EF31) - FUNKTION ALS_GANZZAHL(EF6U3)) <= 14))
ODER
(EF6U2 = '12' UND EF31 /= LEER UND FUNKTION NUMERISCH (EF6U3) UND FUNKTION NUMERISCH (EF31) UND
((FUNKTION ALS_GANZZAHL(EF31) - FUNKTION ALS_GANZZAHL(EF6U3) -1) >= 11) UND
((FUNKTION ALS_GANZZAHL(EF31) - FUNKTION ALS_GANZZAHL(EF6U3) -1) <= 14)))";"Prüfhinweis - manuelle Korrektur (""Kannfehler"")";"1";"";"Wenn Art der HZB Begabtenprüfung: Promovierender war bei Erwerb der Hochschulzugangsberechtigung zwischen 11 - 14 Jahre alt.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"83";"UF_023K";"";"(EF6U2 < '12' UND EF31 /= LEER UND FUNKTION NUMERISCH (EF6U3) UND FUNKTION NUMERISCH (EF31) UND
((FUNKTION ALS_GANZZAHL(EF31) - FUNKTION ALS_GANZZAHL(EF6U3)) >= 11) UND
((FUNKTION ALS_GANZZAHL(EF31) - FUNKTION ALS_GANZZAHL(EF6U3)) <= 16))
ODER
(EF6U2 = '12' UND EF31 /= LEER UND FUNKTION NUMERISCH (EF6U3) UND FUNKTION NUMERISCH (EF31) UND
((FUNKTION ALS_GANZZAHL(EF31) - FUNKTION ALS_GANZZAHL(EF6U3) -1) >= 11) UND
((FUNKTION ALS_GANZZAHL(EF31) - FUNKTION ALS_GANZZAHL(EF6U3) -1) <= 16))";"Prüfhinweis - manuelle Korrektur (""Kannfehler"")";"1";"";"Promovierender war bei Erwerb der Hochschulzugangsberechtigung zwischen 11 - 16 Jahre alt.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"84";"UF_024M";"";"((EF6U2 < '12' UND EF31 /= LEER UND FUNKTION
NUMERISCH (EF6U3) UND FUNKTION NUMERISCH (EF31)
UND
(FUNKTION ALS_GANZZAHL (EF31) - FUNKTION
ALS_GANZZAHL (EF6U3)) <11)
ODER
(EF6U2 = '12' UND EF31 /= LEER UND FUNKTION
NUMERISCH (EF6U3) UND FUNKTION NUMERISCH (EF31)
UND
(FUNKTION ALS_GANZZAHL (EF31) - FUNKTION
ALS_GANZZAHL (EF6U3) -1) <11))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Promovierender war bei Erwerb der Hochschulzugangsberechtigung jünger als 11 Jahre.";"Promovierender war bei Erwerb derHochschulzugangsberechtigung jünger als 11 Jahre.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"85";"UF_025M";"";"EF20 = LEER UND EF22 /= LEER UND EF31 /= LEER UND EF22 < EF31";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Bei Ersteinschreibung in Deutschland liegt das Jahr der Ersteinschreibung vor dem Jahr des Erwerbs der Hochschulzugangsberechtigung.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"86";"UF_026M";"";"(EF32 IN {'31','51','76'} UND EF33U1 = '99')
ODER
(EF32 IN {'39','59','79','17','47','67'} UND EF33U1 IN
{'01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16'})
ODER
(NICHT EF32 IN {'39','59','79','17','47','67'} UND EF33U1 = '99')";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Unplausible Angaben zwischen Art und Land des Erwerbs der HZB.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"87";"UF_027M";"";"(EF33U1 IN
{'01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16'} UND
NICHT (&KONKATENIEREN (EF33U1, EF33U2) IN MATERIAL KREISE (key)))
ODER
(EF33U1 = '98' UND EF33U2 /= '999')";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Falsche Kreiskennziffer bei Kreis des Erwerbs der HZB in Deutschland.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"88";"UF_028M";"";"(EF33U1 = '99' UND NICHT (EF33U2 IN MATERIAL
STAAT (key)))
ODER
(EF33U1 = '99' UND EF33U2 = '000')";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Falscher Länderschlüssel bei Erwerb der HZB außerhalb Deutschlands";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"89";"UF_029M";"";"(EF24 /= LEER UND EF24 /= '9990' UND EF25 /= LEER)
ODER
(EF24 = '9990' UND EF25 = LEER)
ODER
(EF25 /= LEER UND EF24 /= '9990')";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"";"Angaben zum Hochschulstandort und Staat der Ersteinschreibung (Ausland) der vorangegangenen Abschlussprüfung passen nicht zusammen.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"90";"UF_030K";"";"(EF1 /= {'09'} UND (EF13U2 < (EF29 - 5)) UND (EF11 IN { '107', '185' } UND EF13U2 /= LEER)) ODER
(EF1 = {'09'} UND (EF13U2 < (EF29 - 5)) UND (EF11 IN { '107', '185', 'a47', 'a58', 'a80', 'a81', 'a82', 'a83', 'a84', 'b59', 'b68', 'g05', 'g21', 'g73', 'h32', 'h36', 'i74' } UND EF13U2 /= LEER))";"Prüfhinweis - manuelle Korrektur (""Kannfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Der Promotionsbeginn darf bei Medizinpromotionen zeitlich maximal 5 Jahre vor dem Erwerb des promotionsberechtigenden Abschlusses liegen.";"Ausnahmen HS Bayern: Landesinterne Schlüssel für Medizinpromotionen ergänzt.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"91";"UF_031K";"";"(EF2 >= '2018' UND (NICHT EF12 IN {'6'} UND EF13U2 = EF14U2))";"Prüfhinweis - manuelle Korrektur (""Kannfehler"")";"1";"";"Jahr des Promotionsbeginns ist gleich dem Jahr des Promotionsende";"Ab 2018 : Jahr des Promotionsbeginns ist gleich dem Jahr des Promotionsende. Nur bei Abbruch der Promotion (EF12 = 6) ist das gleiche Jahr zulässig.
Kannfehler dient als Hinweis zur Prüfung";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"92";"UF_032M";"";"((EF13U2 * 100 + EF13U1) - (EF6U3 *100 + EF6U2) < 2000) UND (EF6U3 /= LEER) UND
(EF13U2 /= LEER) UND (EF35 /= {' c','abc','a c',' bc'})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Promovierende sind zu Beginn der Promotion jünger als 20 Jahre.";"Promovierende sind zu Beginn der Promotion jünger als 20 Jahre, es erfolgt ein Vergleich von Geburtsdatum und Beginn der Promotion.
Von diesem Mussfehler ausgenommen sind Promovierende bei denen der Beginn der Promotion zum Abschluss der Datenaufbereitung maschinell eingesetzt wurde, da dieser Wert der Hochschule nicht bekannt ist.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"93";"UF_033K";"";"(EF13U2 - EF6U3) > 90 UND EF13U2 /= LEER UND EF6U3 /= LEER";"Prüfhinweis - manuelle Korrektur (""Kannfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Promovierende sind zu Beginn der Promotion älter als 90 Jahre.";"Promovierende sind zu Beginn der Promotion älter als 90 Jahre, es erfolgt ein Vergleich von Geburtsdatum und Beginn der Promotion. Dies ist in Einzelfällen möglich.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"94";"UF_034M";"";"(EF14U2 /= LEER UND EF14U2 = EF13U2 UND EF13U1 >= EF14U1) UND (EF35 /= {' c','abc','a c',' bc'})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Monat Promotionsbeginns ist größer oder gleich dem Monat des Promotionsendes, wenn Promotionsbeginn und -ende im selben Jahr liegen.";"Der Monat des Promotionsbeginns ist größer oder gleich dem Monat des Promotionsendes, wenn Promotionsbeginn und -ende im selben Jahr liegen. Von diesem Mussfehler ausgenommen sind Promovierende bei denen der Beginn der Promotion zum Abschluss der Datenaufbereitung maschinell eingesetzt wurde.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"95";"UF_035M";"";"((EF13U2 <= EF22 UND EF19 /= '9990' UND EF13U2 /= LEER) ODER (EF13U2 < EF22 UND EF19 = '9990' UND EF13U2 /= LEER)) UND (EF35 /= {' c','abc','a c',' bc'} UND EF37 /= {' b ','abc','ab ',' bc'})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Promotionsbeginn liegt vor Ersteinschreibung als Studierender.";"Der Promotionsbeginn liegt vor der Ersteinschreibung als Studierender. Bei Ersteinschreibung in Deutschland: Jahr des Promotionsbeginns liegt vor bzw. ist gleich dem Jahr der Ersteinschreibung. Bei Ersteinschreibung im Ausland: Jahr des Promotionsbeginns liegt vor dem Jahr der Ersteinschreibung. Von diesem Mussfehler ausgenommen sind Promovierende bei denen der Beginn der Promotion bzw. das Jahr der Ersteinschreibung zum Abschluss der Datenaufbereitung maschinell eingesetzt wurde.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"96";"UF_036M";"";"((EF13U2 <= EF31 UND EF33U1 /= '99' UND EF13U2 /= LEER) ODER (EF13U2 < EF31 UND EF33U1 = '99' UND EF13U2 /= LEER)) UND (EF35 /= {' c','abc','a c',' bc'} UND EF38 /= {'a ','abc','ab ','a c'})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Promotionsbeginn liegt vor Erwerb der HZB.";"Der Promotionsbeginn liegt vor dem Erwerb der HZB. Bei HZB Erwerb in Deutschland: Jahr des Promotionsbeginns liegt vor bzw. ist gleich dem Jahr des HZB Erwerbs. Bei HZB Erwerb im Ausland: Jahr des Promotionsbeginns liegt vor dem Jahr des HZB Erwerbs. Von diesem Mussfehler ausgenommen sind Promovierende bei denen der Beginn der Promotion bzw. das Jahr des Erwerbs der HZB zum Abschluss der Datenaufbereitung maschinell eingesetzt wurde.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"97";"UF_037M";"";"((EF23 /= 0) UND (EF29 /= LEER) UND (EF29 - 2 <= EF22) UND (EF12 = 1) UND (EF37 /= {' b ', 'ab ',' c','abc','a c',' bc'} ))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Bei Erstregistrierungen: Zwischen Jahr promotionsberechtigender Abschlussprüfung und Ersteinschreibung als Studierender liegen nur ein oder zwei Jahre.";"Bei Erstregistrierungen: Zwischen dem Jahr der promotionsberechtigenden Abschlussprüfung (EF29) und dem Jahr der Ersteinschreibung als Studierende/r (EF22) liegen ein oder zwei Jahre. Durchschnittliche Studiendauer liegt bei acht Semestern, daher unplausibel. Der Mussfehler wird nicht ausgelöst, wenn eines der beiden Felder durch eine maschinelle Einsetzung befüllt wurde.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"98";"UF_038K";"";"((EF23 /= 0) UND (EF29 - 2 <= EF22) UND (EF29 /= LEER) UND (EF12 /= 1) UND (EF37 /= {' b ', 'ab ', ' c','abc','a c',' bc'}))";"Prüfhinweis - manuelle Korrektur (""Kannfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Für Fälle außer Erstregistrierung: Zwischen Jahr promotionsberechtigender Abschlussprüfung und Ersteinschreibung als Studierender liegen nur ein oder zwei Jahre.";"Bei allen Fälle außer Erstregistrierung (Neuregistrierung/aktive Fortsetzung/Unterbrechung/Abschluss/Abbruch): Zwischen dem Jahr der promotionsberechtigenden Abschlussprüfung (EF29) und dem Jahr der Ersteinschreibung als Studierender (EF22) liegen ein oder zwei Jahre. Durchschnittliche Studiendauer liegt bei acht Semestern, daher unplausibel. Der Kannfehler wird nicht ausgelöst, wenn eines der beiden Felder durch eine maschinelle Einsetzung befüllt wurde.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"99";"UF_039M";"";"((EF23 /= 0) UND (EF29/= LEER) UND (EF29 <= EF31) UND NICHT (EF32 IN {'31','39','51','59','76','79','17','47','67'}) ODER (EF23 /= 0) UND (EF29/= LEER) UND (EF29 < EF31) UND (EF32 IN {'31','39','51','59','76','79','17','47','67'}))
UND (EF37 /= {' c','abc','a c',' bc'} UND EF38 /= {'a ','abc','a c','ab '})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Jahr des promotionsberechtigenden Abschlusses liegt zeitlich vor dem Jahr der HZB.";"Jahr des promotionsberechtigenden Abschlusses liegt zeitlich vor dem Jahr der HZB.
Bei HZB Erwerb in Deutschland: Jahr des promotionsberechtigenden Abschlusses (EF29) liegt vor oder im Jahr der HZB (EF31).
Bei HZB Erwerb im Ausland: Jahr des promotionsberechtigenden Abschlusses (EF29) liegt vor dem Jahr der HZB (EF31).
Der Mussfehler wird nicht ausgelöst, wenn eines der beiden Felder durch eine maschinelle Einsetzung befüllt wurde.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"100";"UF_040M";"";"((EF23 /= 0) UND (EF29 /= LEER) UND (EF29 - 2 <=
EF31) UND (EF12 = 1) UND NICHT (EF32 IN
{'31','39','51','59','76','79','17','47','67'}))
UND (EF37 /= {' c','abc','a c',' bc'} UND EF38
/= {'a ','abc','a c','ab '})";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Bei HZB Erwerb in Deutschland und Erstregistrierung: Zwischen dem Jahr des promotionsberechtigenden Abschlusses und dem Jahr der HZB liegen nur ein bis zwei Jahre.";"Bei HZB Erwerb in Deutschland: Hier wird nur bei Erstregistrierungen (EF12 =1) geprüft, ob zwischen dem Jahr des promotionsberechtigenden Abschlusses (EF29) und dem Jahr der HZB (EF31) ein oder zwei Jahre liegen.
Durchschnittliche Studiendauer liegt bei acht Semestern, daher unplausibel.
Der Mussfehler wird nicht ausgelöst, wenn eines der beiden Felder durch eine maschinelle Einsetzung befüllt wurde.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"101";"UF_041K";"";"((EF23 /= 0) UND (EF29 /= LEER) UND (EF29 - 2 <= EF31) UND (EF12 /= 1)) UND (EF37 /= {' c','abc','a c',' bc'} UND EF38 /= {'a ','abc','a c','ab '})";"Prüfhinweis - manuelle Korrektur (""Kannfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Für Fälle außer Erstregistrierung: Zwischen dem Jahr des promotionsberechtigenden Abschlusses und dem Jahr der HZB liegen nur ein bis zwei Jahre.";"Für Fälle außer Erstregistrierung: Jahr des promotionsberechtigenden Abschlusses EF29 liegt ein oder zwei Jahre nach dem Jahr der HZB EF31. Durchschnittliche Studiendauer liegt bei acht Semestern, daher unplausibel. Der Kannfehler wird nicht ausgelöst, wenn eines der beiden Felder durch eine maschinelle Einsetzung befüllt wurde.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"102";"UF_042K";"";"((EF23 /= 0) UND (EF29 /= LEER) UND (EF29 = EF31) UND (EF32 IN {'31','39','51','59','76','79','17','47','67'})) UND (EF37 /= {' c','abc','a c',' bc'} UND EF38 /= {'a ','abc','a c','ab '})";"Prüfhinweis - manuelle Korrektur (""Kannfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Jahr des promotionsberechtigenden Abschlusses liegt im Jahr der HZB (bei Erwerb der HZB im Ausland).";"Jahr des promotionsberechtigenden Abschlusses (EF29) und Jahr des HZB Erwerb im Ausland (EF31) liegen im selben Jahr. Der Kannfehler wird nicht ausgelöst, wenn eines der beiden Felder durch eine maschinelle Einsetzung befüllt wurde.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"103";"UF_043M";"";"((EF40 = { '117', '317', '817','506', '591', '592','107', '507', '807', '186', '997'}) UND (EF37 /= {' c','abc','a c',' bc'}))";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Promotionsberechtigende Abschlüsse berechtigen nicht zur Promotion.";"Es wurden Abschlüsse als promotionsberechtigender Abschluss (EF26) gemeldet, die nicht zur Promotion berechtigen. Der Mussfehler wird nicht ausgelöst, wenn der promotionsberechtigende Abschluss durch eine maschinelle Einsetzung befüllt wurde.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"104";"UF_044M";"";"EF8 = '999'";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Staatsangehörigkeit mit ""999"" (ohne Angabe) signiert, statt Feld leer zu lassen, wenn Angaben nicht bekannt.";"Für das Merkmal EF8 (Staatsangehörigkeit) wurde die Angabe ""999 = ohne Angabe"" von den Hochschulen verwendet. Falls die Staatsangehörigkeit nicht bekannt ist, sollte das Feld leer gelassen werden. Es gibt für EF8 eine Setzung, demnach werden Datensätze ohne Angabe der Staatsangehörigkeit nach der Verteilung von Deutschen und Ausländern nach Fächergruppen der jeweiligen Hochschule zugewiesen.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"105";"UF_045K";"";"EF1 = '08' UND EF17 = 0 UND EF15 = 0 UND EF36 /= {' c',' bc','a ','abc','ab ','a c'} UND EF13U2 >= '2018'";"Prüfhinweis - manuelle Korrektur (""Kannfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Ihre Eingabe ist unzulässig.";"Kannfehler Baden-Württemberg
ab Promotionsbeginn 2018 entweder Beschäftigung an der Hochschule der Promotion oder Immatrikulation";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"106";"UF_046M";"";"EF23 = '0'
UND
(EF24 /= LEER ODER EF26 /= LEER ODER EF27 /= LEER
ODER EF28 /= LEER ODER EF29 /= LEER ODER EF30 /= LEER)";"Fehler - manuelle Korrektur (""Mussfehler"")";"1";"Korrigieren Sie bitte Ihre Angabe.";"Laut Merkmal promotionsberechtigender Abschluss (EF23) liegt ein solcher Abschluss nicht vor, aber in den EF24 bis EF30 sind Angaben erfasst.";"Bitte prüfen Sie ob ein promotionsberechtigender Abschluss vorliegt (Merkmal EF23)
Falls kein promotionsberechtigender Abschluss vorliegt, sind etwaige Angaben in den Merkmalen die sich auf den promotionsberechtigenden Abschluss (EF24 bis EF30) beziehen, zu löschen. Falls ein promotionsberechtigender Abschluss vorliegt, ist EF23 anzupassen.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"107";"E_000";"";"EF1 /= LEER";"Fehler - maschinelle Korrektur";"1";"Korrigieren Sie bitte Ihre Angabe.";"In einem vorherigen PL Lauf eingesetzte Schlüssel werden gelöscht.";"In einem vorherigen PL Lauf eingesetzte Schlüssel in EF39 bis EF50 werden gelöscht und durch die nachfolgenden Einsetzungen neu befüllt. Damit wird sichergestellt das bei Schlüssellöschungen im Liefermaterial auch die vorher eingesetzten Schlüssel gelöscht werden.";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"108";"E_001";"";"EF11 /= LEER";"Fehler - maschinelle Korrektur";"1";"";"Einsetzung des Bundessignierschlüssels Promotionsfach in das EF39.";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"109";"E_002";"";"EF26 /= LEER";"Fehler - maschinelle Korrektur";"1";"";"Signierschlüssel Bund vorangegangener Abschluss in EF40";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"110";"E_003";"";"EF27 /= LEER";"Fehler - maschinelle Korrektur";"1";"";"Einsetzung Signierschlüssel Bund vorangegangenes 1. Studienfach in EF41";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"111";"E_004";"";"EF1 /= LEER";"Fehler - maschinelle Korrektur";"1";"";"Einsetzung Sortierschlüssel Bundesland in EF42";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"112";"E_005";"";"REIHE (EF3) IN MATERIAL HOCHSCHULFACHBEREICH(key)";"Fehler - maschinelle Korrektur";"1";"";"Einsetzung Sortierschlüssel bei Hochschule in EF44";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"113";"E_006";"";"EF44 /= LEER";"Fehler - maschinelle Korrektur";"1";"";"Einsetzung Sortierschlüssel Hochschulart in EF43";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"114";"E_007";"";"REIHE (EF3) IN MATERIAL HOCHSCHULFACHBEREICH(key)";"Fehler - maschinelle Korrektur";"1";"";"Einsetzung des Schlüssels der Trägerschaft der Hochschule in EF45";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"115";"E_008";"";"EF3 IN MATERIAL HOCHSCHULFACHBEREICH (key)";"Fehler - maschinelle Korrektur";"1";"";"Einsetzung Gemeindeschlüssel in EF46";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"116";"E_009";"";"EF8 /= LEER";"Fehler - maschinelle Korrektur";"1";"";"Einsetzung Sortierschlüssel Staatsangehörigkeit in EF47";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"117";"E_010";"";"EF6U2 /= LEER UND EF6U3 /= LEER";"Fehler - maschinelle Korrektur";"1";"";"Altersberechnung aus Berichtszeitraum und Geburtmonat und -jahr in EF48";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"118";"E_011";"";"EF39 /= LEER";"Fehler - maschinelle Korrektur";"1";"";"Einsetzung Sortierschlüssel Promotionsfach in EF49";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
"";"PROMOVIERENDE";"";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017";"Syme-L";"TELEFON";"EMAIL";"26.02.2026 - 13:44";"PROMOVIERENDE.Ablauf_Promovierende_ab_2017";"";"119";"E_012";"";"EF33U1 /= LEER";"Fehler - maschinelle Korrektur";"1";"Korrigieren Sie bitte Ihre Angabe.";"Umsetzung der alten Kreischlüssel bei Land und Kreis des Erwerbs der HZB auf den Stand SS 2017 in EF50";"";"Freigegeben";"VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE";""
1 Evas Stat Bzr Ablaufname Ablaufkommentar Ablaufbeschreibung Statistikname Person Telefon eMail Datum Ablauf Themenbereich Nr.-Ablauf Prüfschlüssel Beschreibung Prüfbedingung Prüfungsart Fehlergewicht Korrekturhinweis Fehlertext-kurz Fehlertext-lang Status Spezifiziert-in Kommentar
2 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 1 MA_001 EF3 /= LEER Fehler - maschinelle Korrektur 1 Alle leeren Eingabefelder die von den liefernden Hochschulen mit Leerzeichen gefüllt wurden, werden auf LEER gesetzt. Alle leeren Eingabefelder die von den liefernden Hochschulen mit Leerzeichen gefüllt wurden, werden auf LEER gesetzt. (Ausnahme sind die Felder frei für StLÄ) Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
3 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 2 MA_002 EF3 /= LEER Fehler - maschinelle Korrektur 1 Alle leeren Eingabefelder die von den liefernden Hochschulen mit 0 gefüllt wurden, werden auf LEER gesetzt. (Ausnahme sind die EF in denen 0 eine zulässige Signatur ist.) Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
4 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 3 MA_003 (EF14U1 = LEER UND EF14U2 = LEER) UND EF12 IN {'5','6'} Fehler - maschinelle Korrektur 1 Bei fehlender Angabe des Promotionsendes wird der Dezember des Berichtsjahres eingesetzt. Wenn EF12=5 (erfolgreicher Abschluss) oder 6 (Abbruch) ist und EF14 LEER ist, dann wird für EF14 das Datum Dezember (12) des Berichtsjahres EF2 eingesetzt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
5 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 4 MA_004 (EF19 IN {'0110','0330','0350','1300','1400','1620','1670','2010','2070','2330', '2460','2470','2661','3600','3650','3740','3730','3760','5070', '5180','5200','5290','5335','5386','5572','5574','5580','5600', '5870','5903','6209','6283','6250','6310','6420','6450','6500','6880', '6920','6940','7000','7200','7640','7650','7660','7800','8042','8043', '8121','8122','8130','8160' }) ODER (EF19 IN {'2271'} UND &KONKATENIEREN (EF22, EF21) < '20182') Fehler - maschinelle Korrektur 1 PSEUDONYMMERKMAL: Diese Prüfung muss mit Studierenden- und Prüfungsstatistik identisch sein zwecks Pseudonymerstellung für Studienverläufe. Auszug Protokoll Referentenbesprechung: Das Statistische Bundesamt erläutert, das für alle Hochschulen, die im Sommersemester 2017 nicht mehr bestehen, für die Hochschule der Ersteinschreibung der Schlüssel „9000“ (sonstige deutsche Hochschule) zu verwenden ist. Dagegen müssen Hochschulen, die ab dem Sommersemester 2017 stillgelegt werden, bezüglich der Hochschule der Ersteinschreibung weiterhin mit dem ehemaligen, aktuell aber nicht mehr gültigen Schlüssel signiert werden. Das Statistische Bundesamt erörtert mit dem für DAHStat zuständigen HSL, wie diese Anforderung im Schlüsselverzeichnis umgesetzt bzw. in der PL verhindert werden kann, dass Schlüssel für ehemalige Hochschulen bei der Verschlüsselung der aktuelle Hochschule verwendet werden. Wenn die Hochschule der Ersteinschreibung aufgelöst wurde, wird der Signierschlüssel 9000 eingesetzt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
6 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 5 MA_005 EF19 IN {'0070','0090','0091','0092','0122','0123','0124','0210','0220','0230','0250','0280','0290','0303','0320','0340', '0381','0382','0400','0410','0420','0430','0440','0450','0460','0470','0480','0531','0532','0550','0561','0562','0570','0600', '0610','0810','0851','0852','0853','0990','0991','0992','0993','1070','1229','1310','1320','1387','1388','1630','1640','1650', '1720','1860','2090','2110','2120','2140','2160','2250','2260','2310','2340','2400','2480','2562','2563','2662','2680','2751', '2780','2820','2840','2910','2970','3012','3110','3150','3160','3170','3180','3190','3200','3210','3220','3280','3300','3310', '3320','3330','3340','3350','3380','3390','3400','3410','3420','3450','3460','3470','3480','3510','3520','3531','3532','3540', '3551','3552','3553','3560','3570','3580','3581','3582','3583','3590','3610','3620','3630','3690','3712','3750','3770','3800', '3810','3820','3830','3840','3850','3860','3870','3920','3960','5021','5022','5023','5024','5025','5026','5027','5028','5031', '5032','5033','5040','5301','5302','5303','5304','5305','5320','5331','5332','5333','5334','5340','5360','5370','5383','5384', '5390','5421','5422','5441','5442','5450','5462','5463','5481','5482','5490','5502','5510','5520','5530','5540','5550','5560', '5571','5573','5590','5610','5620','5630','5640','5650','5740','5750','5760','5790','5811','5812','5850','5880','5900','5910', '5920','5930','5940','5950','5960','5970','6010','6020','6040','6050','6060','6073','6078','6079','6080','6090','6100','6110', '6120','6130','6140','6150','6160','6170','6201','620A','6242','6260','6300','6341','6350','6440','6460','6470','6480','6490', '6520','6550','6561','6562','6570','6580','6651','6652','6871','6872','6930','6950','6960','6980','6990','7030','7040','7080', '7100','7130','7150','7160','7170','7191','7192','7221','7222','7230','7340','7353','7360','7371','7373','7380','7390','7400', '7410','7441','7442','7470','7480','7490','7500','7510','7520','7530','7711','7712','7713','7714','7720','7740','7760','7770', '7861','7862','7863','7870','8041','8044','8050','8070'} Fehler - maschinelle Korrektur 1 PSEUDONYMMERKMAL: Diese Prüfung muss mit Studierenden- und Prüfungsstatistik identisch sein zwecks Pseudonymerstellung für Studienverläufe. Diese Prüfung muss mit Studierenden- und Prüfungsstatistik identisch sein zwecks Pseudonymerstellung für Studienverläufe. Auszug Protokoll Referentenbesprechung: Das Statistische Bundesamt erläutert, das für alle Hochschulen, die im Sommersemester 2017 nicht mehr bestehen, für die Hochschule der Ersteinschreibung der Schlüssel „9000“ (sonstige deutsche Hochschule) zu verwenden ist. Dagegen müssen Hochschulen, die ab dem Sommersemester 2017 stillgelegt werden, bezüglich der Hochschule der Ersteinschreibung weiterhin mit dem ehemaligen, aktuell aber nicht mehr gültigen Schlüssel signiert werden. Das Statistische Bundesamt erörtert mit dem für DAHStat zuständigen HSL, wie diese Anforderung im Schlüsselverzeichnis umgesetzt bzw. in der PL verhindert werden kann, dass Schlüssel für ehemalige Hochschulen bei der Verschlüsselung der aktuelle Hochschule verwendet werden. Wenn die Hochschule der Ersteinschreibung in eine andere Hochschule eingegliedert wurde, wird der Signierschlüssel der neuen Hochschule eingesetzt. Wenn der Hochschulstandort der Ersteinschreibung in eine andere Hochschule eingegliedert wurde, wird der Signierschlüssel des neuen Hochschulstandortes eingesetzt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
7 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 6 MA_006 NICHT EF1 IN {'09'} UND EF8 > '000' UND EF33U1 = '99' UND NICHT (EF32 IN {'31','39','51','59','76','79','17','47','67'}) UND EF19 IN MATERIAL HOCHSCHULFACHBEREICH (key) UND &fkt_MA_007() IN {60000000,60000001..79999999} Fehler - maschinelle Korrektur 1 PSEUDONYMMERKMAL: Diese Prüfung muss mit Studierenden- und Prüfungsstatistik identisch sein zwecks Pseudonymerstellung für Studienverläufe. Ausländer mit Erwerb der HZB im Ausland und falsche oder fehlende Angaben zur Art der HZB Einsetzung der Signatur '79' bei Art der HZB. Nur bei Fach- und Verwaltungsfachhochschulen.Bei wissenschaftlichen Hochschulen Kontrolle MA_007. Diese Kontrolle wird nicht für Bayern ausgeführt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
8 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 7 MA_007 NICHT EF1 IN {'09'} UND EF8 > '000' UND EF33U1 = '99' UND NICHT (EF32 IN {'31','39','51','59','76','79','17','47','67'}) UND EF19 IN MATERIAL HOCHSCHULFACHBEREICH (key) UND NICHT (&fkt_MA_007() IN {60000000,60000001..79999999}) Fehler - maschinelle Korrektur 1 PSEUDONYMMERKMAL: Diese Prüfung muss mit Studierenden- und Prüfungsstatistik identisch sein zwecks Pseudonymerstellung für Studienverläufe. Ausländer mit Erwerb der HZB im Ausland und falsche oder fehlende Angaben zur Art der HZB Einsetzung der Signatur '39' bei Art der HZB. Nur bei wissenschaftlichen Hochschulen.Bei Fach- und Verwaltungsfachhochschulen Kontrolle MA_006. Diese Kontrolle wird nicht für Bayern ausgeführt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
9 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 8 MA_008 NICHT EF1 IN {'09'} UND EF32 IN {'39','59','79','17','47','67'} UND FUNKTION NUMERISCH (EF8) UND EF8 IN {001,002..998,999} UND (EF33U1 = LEER ODER EF33U1 = ' ') Fehler - maschinelle Korrektur 1 PSEUDONYMMERKMAL: Diese Prüfung muss mit Studierenden- und Prüfungsstatistik identisch sein zwecks Pseudonymerstellung für Studienverläufe. Einsetzung Land des Erwerbs der HZB (Nur bei Ausländer) Ausländer und keine Angaben im Land des Erwerbs der HZB (EF33U1), wird 99 für Ausland als Land des Erwerbs der HZB übernommen.Diese Kontrolle wird nicht für Bayern ausgeführt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
10 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 9 MA_009 EF32 IN {'39','59','79','17','47','67'} UND FUNKTION NUMERISCH (EF8) UND EF8 IN {001,002..998,999} UND (EF33U2 = LEER ODER EF33U2 = ' ') Fehler - maschinelle Korrektur 1 PSEUDONYMMERKMAL: Diese Prüfung muss mit Studierenden- und Prüfungsstatistik identisch sein zwecks Pseudonymerstellung für Studienverläufe. Einsetzung Staat des Erwerbs der HZB (Nur bei Ausländer) Ausländer und keine Angaben im Staat des Erwerbs der HZB (EF33U2), wird Staatsangehörigkeit für Staat des Erwerbs der ersten HZB übernommen. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
11 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 10 MA_010 (EF24 IN {'0110','0330','0350','1300','1400','1620','1670','2010','2070','2330', '2460','2470','2661','2271','3600','3650','3740','3730','3760','5070', '5180','5200','5290','5335','5386','5572','5574','5580','5600', '5870','5903','6209','6283','6250','6310','6420','6450','6500','6880', '6920','6940','7000','7200','7640','7650','7660','7800','8042','8043', '8121','8122','8130','8160' }) ODER (EF24 IN {'2271'} UND EF29 < '2018') Fehler - maschinelle Korrektur 1 PSEUDONYMMERKMAL: Diese Prüfung muss mit Studierenden- und Prüfungsstatistik identisch sein zwecks Pseudonymerstellung für Studienverläufe. Auszug Protokoll Referentenbesprechung: Das Statistische Bundesamt erläutert, das für alle Hochschulen, die im Sommersemester 2017 nicht mehr bestehen, für die Hochschule der Ersteinschreibung der Schlüssel „9000“ (sonstige deutsche Hochschule) zu verwenden ist. Dagegen müssen Hochschulen, die ab dem Sommersemester 2017 stillgelegt werden, bezüglich der Hochschule der Ersteinschreibung weiterhin mit dem ehemaligen, aktuell aber nicht mehr gültigen Schlüssel signiert werden. Das Statistische Bundesamt erörtert mit dem für DAHStat zuständigen HSL, wie diese Anforderung im Schlüsselverzeichnis umgesetzt bzw. in der PL verhindert werden kann, dass Schlüssel für ehemalige Hochschulen bei der Verschlüsselung der aktuelle Hochschule verwendet werden. Wenn die Hochschule der vorangegangenen Abschlussprüfung aufgelöst wurde, wird der Signierschlüssel 9000 eingesetzt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
12 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 11 MA_011 EF24 IN {'0070','0090','0091','0092','0122','0123','0124','0210','0220','0230','0250','0280','0290','0303','0320','0340', '0381','0382','0400','0410','0420','0430','0440','0450','0460','0470','0480','0531','0532','0550','0561','0562','0570','0600', '0610','0810','0851','0852','0853','0990','0991','0992','0993','1070','1229','1310','1320','1387','1388','1630','1640','1650', '1720','1860','2090','2110','2120','2140','2160','2250','2260','2310','2340','2400','2480','2562','2563','2662','2680','2751', '2780','2820','2840','2910','2970','3012','3110','3150','3160','3170','3180','3190','3200','3210','3220','3280','3300','3310', '3320','3330','3340','3350','3380','3390','3400','3410','3420','3450','3460','3470','3480','3510','3520','3531','3532','3540', '3551','3552','3553','3560','3570','3580','3581','3582','3583','3590','3610','3620','3630','3690','3712','3750','3770','3800', '3810','3820','3830','3840','3850','3860','3870','3920','3960','5021','5022','5023','5024','5025','5026','5027','5028','5031', '5032','5033','5040','5301','5302','5303','5304','5305','5320','5331','5332','5333','5334','5340','5360','5370','5383','5384', '5390','5421','5422','5441','5442','5450','5462','5463','5481','5482','5490','5502','5510','5520','5530','5540','5550','5560', '5571','5573','5590','5610','5620','5630','5640','5650','5740','5750','5760','5790','5811','5812','5850','5880','5900','5910', '5920','5930','5940','5950','5960','5970','6010','6020','6040','6050','6060','6073','6078','6079','6080','6090','6100','6110', '6120','6130','6140','6150','6160','6170','6201','620A','6242','6260','6300','6341','6350','6440','6460','6470','6480','6490', '6520','6550','6561','6562','6570','6580','6651','6652','6871','6872','6930','6950','6960','6980','6990','7030','7040','7080', '7100','7130','7150','7160','7170','7191','7192','7221','7222','7230','7340','7353','7360','7371','7373','7380','7390','7400', '7410','7441','7442','7470','7480','7490','7500','7510','7520','7530','7711','7712','7713','7714','7720','7740','7760','7770', '7861','7862','7863','7870','8041','8044','8050','8070'} Fehler - maschinelle Korrektur 1 PSEUDONYMMERKMAL: Diese Prüfung muss mit Studierenden- und Prüfungsstatistik identisch sein zwecks Pseudonymerstellung für Studienverläufe. Diese Prüfung muss mit Studierenden- und Prüfungsstatistik identisch sein zwecks Pseudonymerstellung für Studienverläufe. Auszug Protokoll Referentenbesprechung: Das Statistische Bundesamt erläutert, das für alle Hochschulen, die im Sommersemester 2017 nicht mehr bestehen, für die Hochschule der Ersteinschreibung der Schlüssel „9000“ (sonstige deutsche Hochschule) zu verwenden ist. Dagegen müssen Hochschulen, die ab dem Sommersemester 2017 stillgelegt werden, bezüglich der Hochschule der Ersteinschreibung weiterhin mit dem ehemaligen, aktuell aber nicht mehr gültigen Schlüssel signiert werden. Das Statistische Bundesamt erörtert mit dem für DAHStat zuständigen HSL, wie diese Anforderung im Schlüsselverzeichnis umgesetzt bzw. in der PL verhindert werden kann, dass Schlüssel für ehemalige Hochschulen bei der Verschlüsselung der aktuelle Hochschule verwendet werden. Wenn die Hochschule der vorangegangenen Abschlussprüfung in eine andere Hochschule eingegliedert wurde, wird der Signierschlüssel der neuen Hochschule eingesetzt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
13 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 12 MA_012 (EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF6U1 = LEER) Fehler - maschinelle Korrektur 1 Wenn kein Geburtstag angegeben wurde, wird nach Abschluss der Aufbereitung EF6U1 = '01' und EF38 = .b. (auf die zweite Satzstelle) gesetzt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
14 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 13 MA_013 (EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF6U2 = LEER) Fehler - maschinelle Korrektur 1 Wenn kein Geburtsmonat angegeben wurde, wird nach Abschluss der Aufbereitung EF6U2 = '07' und EF38 = ..c (auf die dritte Satzstelle) gesetzt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
15 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 14 MA_014 (EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF10 = LEER) Fehler - maschinelle Korrektur 1 Wenn keine Art der Promotion angegegeben wurde, wird nach Abschluss der Aufbereitung EF10 = '01' und EF35 = a.. (auf die erste Satzstelle) gesetzt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
16 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 15 MA_016 (EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF13U1 = LEER) Fehler - maschinelle Korrektur 1 Wenn kein Monat als Beginn der Promotion angegegeben wurde, wird nach Abschluss der Aufbereitung EF13U1 = '01' und EF35 = ..c (auf die dritte Satzstelle) gesetzt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
17 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 16 MA_017 (EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF13U2 = LEER) Fehler - maschinelle Korrektur 1 Wenn kein Jahr als Beginn der Promotion angegeben wurde, wird nach Abschluss der Aufbereitung EF13U2 in Abhängigkeit von EF12 gesetzt, zudem wird EF35 = ..c (auf die dritte Satzstelle) gesetzt. wenn EF12 = '3' = EF13U2 ='2024' wenn EF12 = '4 oder 6' = EF13U2 ='2025' wenn EF12 = '5' = EF13U2 ='2021'' Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
18 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 17 MA_018 (EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF15 = LEER) Fehler - maschinelle Korrektur 1 Wenn Immatrikulation nicht angegegeben wurde, wird nach Abschluss der Aufbereitung EF15 = '0' gesetzt, zudem wird EF36 = a.. (auf die erste Satzstelle) gesetzt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
19 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 18 MA_019 (EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF16 = LEER) Fehler - maschinelle Korrektur 1 Wenn strukt. Promotionsprogramm nicht angegegeben wurde, wird nach Abschluss der Aufbereitung EF16 = '0' gesetzt, zudem wird EF36 = .b. (auf die zweite Satzstelle) gesetzt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
20 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 19 MA_020 (EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF17 = LEER) Fehler - maschinelle Korrektur 1 Wenn nicht angegeben wurde, ob ein Beschäftigungsverhältnis an der Hochschule besteht, wird nach Abschluss der Aufbereitung EF17 = '0' gesetzt, zudem wird EF36 = ..c (auf die dritte Satzstelle) gesetzt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
21 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 20 MA_021 (EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF18 = LEER) Fehler - maschinelle Korrektur 1 Wenn die Art der Dissertation nicht angegegeben wurde, wird nach Abschluss der Aufbereitung EF18 = '1' gesetzt, zudem wird EF37 = a.. (auf die erste Satzstelle) gesetzt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
22 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 21 MA_022 (EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF19 = LEER ODER EF21 = LEER ODER EF22 = LEER) Fehler - maschinelle Korrektur 1 Wenn eine Angabe zur Ersteinschreibung (EF19-EF22) nicht angegegeben wurde, dann wird nach Abschluss der Aufbereitung EF19 = 9000, EF21 = 1 und EF 22 = EF31 gesetzt. Falls EF31 = leer und EF29 ungleich leer, dann wird EF22 = EF29 gesetzt. Falls EF31 und EF29 leer, dann wird EF22 = EF13U2 gesetzt. Zudem wird EF37 = .b. (auf die zweite Satzstelle) gesetzt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
23 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 22 MA_023 (EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF23 IN {LEER,'1'} UND (EF24 = LEER ODER EF26 = LEER ODER EF27 = LEER ODER EF28 = LEER ODER EF29 = LEER ODER EF30 = LEER)) Fehler - maschinelle Korrektur 1 Wenn eine Angabe zur prom. Abschlussprüfung (EF23-EF30) nicht angegegeben wurde, dann wird nach Abschluss der Aufbereitung EF23 = 1, EF24 = 9000, EF26 = 102, EF27 = 004, EF28 = 01, EF 29 = EF22, EF 30= 8 gesetzt, zudem wird EF37 = ..c (auf die dritte Satzstelle) gesetzt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
24 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 23 MA_024 (EF12 IN {'3','4','5','6'} UND EF3 IN {'0080', '0082', '0121', '0130', '0800', '1040', '1080', '1090', '1110', '1120', '1130', '1240', '1270', '1480', '1490', '1580', '1810', '1820'}) UND (EF31 = LEER ODER EF32 = LEER ODER EF33U1 = LEER ODER EF33U2 = LEER) Fehler - maschinelle Korrektur 1 Wenn eine Angabe zur HZB (EF31-EF33) nicht angegegeben wurde, dann wird nach Abschluss der Aufbereitung EF31 = EF22, EF32 = 03 und EF 33 = 98999 gesetzt, zudem wird EF38 = a.. (auf die erste Satzstelle) gesetzt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
25 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 24 SIG_001 (EF3 IN {'0081', '0089', '0261', '0269', '0271', '0279', '0309', '0311', '0319', '0361', '0369', '0371', '0379', '0491', '0499', '0640', '0650', '0950', '1001', '1011', '1021', '1029', '1031', '1039', '1081', '1089', '1091', '1099', '1101', '1109', '1111', '1119', '1121', '1129', '1161', '1169', '1241', '1249', '1251', '1258', '1259', '1271', '1279', '1293', '1319', '1321', '1329', '1331', '1339', '1341', '1349', '1361', '1362', '1369', '1378', '1379', '1390', '1481', '1489', '1491', '1499', '1639', '1731', '1739', '1821', '1829', '5021', '5022', '5024', '5025', '5026', '5027', '5028', '5150', '5160', '6245', '7467', '8100'}) ODER (EF19 IN {'0081', '0089', '0261', '0269', '0271', '0279', '0309', '0311', '0319', '0361', '0369', '0371', '0379', '0491', '0499', '0640', '0650', '0950', '1001', '1011', '1021', '1029', '1031', '1039', '1081', '1089', '1091', '1099', '1101', '1109', '1111', '1119', '1121', '1129', '1161', '1169', '1241', '1249', '1251', '1258', '1259', '1271', '1279', '1293', '1319', '1321', '1329', '1331', '1339', '1341', '1349', '1361', '1362', '1369', '1378', '1379', '1390', '1481', '1489', '1491', '1499', '1639', '1731', '1739', '1821', '1829', '5021', '5022', '5024', '5025', '5026', '5027', '5028', '5150', '5160', '6245', '7467', '8100'}) ODER (EF24 IN {'0081', '0089', '0261', '0269', '0271', '0279', '0309', '0311', '0319', '0361', '0369', '0371', '0379', '0491', '0499', '0640', '0650', '0950', '1001', '1011', '1021', '1029', '1031', '1039', '1081', '1089', '1091', '1099', '1101', '1109', '1111', '1119', '1121', '1129', '1161', '1169', '1241', '1249', '1251', '1258', '1259', '1271', '1279', '1293', '1319', '1321', '1329', '1331', '1339', '1341', '1349', '1361', '1362', '1369', '1378', '1379', '1390', '1481', '1489', '1491', '1499', '1639', '1731', '1739', '1821', '1829', '5021', '5022', '5024', '5025', '5026', '5027', '5028', '5150', '5160', '6245', '7467', '8100'}) Fehler - manuelle Korrektur ("Mussfehler") 1 Signierschlüssel der Hochschule ist nur bei der Personal- und Stellenstatistik zulässig. Bei der aktuellen Hochschule (EF3) ,der Hochschule der Ersteinschreibung (EF19) oder der Hochschule der zur Promotion berechtigende, vorangegangenen Abschlussprüfung (EF24) steht ein Signierschlüssel der nur bei der Hochschulpersonalstatistik zulässig ist. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
26 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 25 SIG_002 NICHT EF3 IN {'0011', '0012', '0013', '0014', '0080', '0082', '0121', '0130', '0140', '0150', '0180', '0190', '0200', '0260', '0270', '0301', '0302', '0310', '0360', '0370', '0372', '0373', '0380', '0390', '0490', '0500', '0510', '0511', '0520', '0530', '0540', '0551', '0552', '0560', '0580', '0590', '0620', '0630', '0660', '0670', '0680', '0690', '0800', '0811', '0812', '0910', '0960', '0980', '0990', '1000', '1010', '1020', '1030', '1040', '1050', '1060', '1080', '1090', '1100', '1110', '1120', '1130', '1140', '1150', '1160', '1170', '1180', '1190', '1200', '1210', '1211', '1221', '1222', '1230', '1240', '1250', '1252', '1260', '1270', '1291', '1292', '1311', '1312', '1322', '1323', '1330', '1340', '1350', '1360', '1380', '1430', '1440', '1450', '1460', '1480', '1490', '1530', '1541', '1542', '1580', '1590', '1631', '1632', '1633', '1634', '1690', '1700', '1730', '1740', '1800', '1810', '1820', '1960', '2000', '2020', '2030', '2040', '2050', '2060', '2170', '2200', '2271', '2272', '2300', '2420', '2430', '2500', '2530', '2550', '2561', '2571', '2572', '2573', '2574', '2581', '2582', '2583', '2590', '2600', '2610', '2620', '2630', '2640', '2650', '2660', '2670', '2690', '2700', '2710', '2720', '2730', '2740', '2760', '2770', '2790', '2800', '2810', '2830', '2850', '2860', '2870', '2880', '2890', '2920', '2940', '2950', '2960', '2980', '3011', '3030', '3100', '3370', '3500', '3660', '3670', '3680', '3700', '3711', '3780', '3930', '3940', '3950', '3971', '3972', '3980', '3990', '4730', '4740', '4750', '4760', '4770', '4780', '4790', '4800', '4810', '4820', '4830', '4840', '4850', '4860', '4870', '4880', '4890', '4900', '4910', '4920', '4930', '5080', '6211', '6212', '6220', '6231', '6232', '6233', '6243', '6244', '6290', '6370', '7960', '8000', '8011', '8012', '8021', '8022', '8031', '8032', '8033'} Fehler - manuelle Korrektur ("Mussfehler") 1 Die meldende Hochschule (EF3) hat kein Promotionsrecht Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
27 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 26 SIG_003 FUNKTION WERTLAENGE(EF4) < 6 ODER FUNKTION WERTLAENGE(EF4) > 12 Fehler - manuelle Korrektur ("Mussfehler") 1 Paginiernummer (EF4) ist 000001 bis 999999 (mindestens 6 Stellen, maximal 12 Stellen) Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
28 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 27 SIG_004 FUNKTION WERTLAENGE (EF5) /= 1 ODER NICHT &NUMERISCH (EF5) ODER NICHT EF5 IN {'1','2', '3', '4'} Fehler - manuelle Korrektur ("Mussfehler") 1 Geschlecht (EF5) ist ungleich 1, 2 ,3 oder 4. Geschlecht (EF5) ungleich 1, 2 ,3 oder 4. Stand der PL Klassen vom 26.02.2026 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
29 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 28 SIG_005 (FUNKTION WERTLAENGE (EF6U1) /= 2) ODER ((NICHT &NUMERISCH (EF6U1) ODER (EF6U2 IN {01,03,05,07,08,10,12} UND NICHT EF6U1 IN {01,02..31})) ODER (NICHT &NUMERISCH (EF6U1) ODER (EF6U2 IN {04,06,09,11} UND NICHT EF6U1 IN {01,02..30})) ODER (NICHT &NUMERISCH (EF6U1) ODER (EF6U2 IN {02} UND NICHT EF6U1 IN {01,02..29})) ODER (NICHT &NUMERISCH (EF6U1) ODER (EF6U2 IN {02} UND EF6U1 IN {29} UND NICHT EF6U3 IN {1912,1916,1920,1924,1928,1932,1936,1940,1944,1948,1952,1956,1960, 1964,1968,1972,1976,1980,1984,1988,1992,1996,2000 ,2004,2008,2012,2016,2020,2024}))) Fehler - manuelle Korrektur ("Mussfehler") 1 Angabe zum Geburtstag (EF6U1) ist in Abhängigkeit mit dem Geburts-Monat ungleich 01 bis 31. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
30 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 29 SIG_006 (FUNKTION WERTLAENGE (EF6U2) /= 2) ODER (NICHT &NUMERISCH (EF6U2) ODER NICHT EF6U2 IN {01,02..12}) Fehler - manuelle Korrektur ("Mussfehler") 1 Angabe Geburtsmonat (EF6U2) ungleich 01 bis 12. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
31 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 30 SIG_007 (FUNKTION WERTLAENGE (EF6U3) /= 4) ODER (NICHT &NUMERISCH (EF6U3) ODER NICHT EF6U3 IN {1912,1913..2020}) Fehler - manuelle Korrektur ("Mussfehler") 1 Angabe Geburtsjahr (EF6U3) kleiner Wert "1912". Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
32 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 31 SIG_008 FUNKTION WERTLAENGE (EF7) /= 4 ODER (FUNKTION WERTLAENGE (EF7) = 4 UND NICHT (&TEIL (EF7,1,1) IN {'A','a','B','b','C','c','D','d','E','e','F','f', 'G','g', 'H','h','I','i','J','j','K','k','L','l','M','m','N','n', 'O','o','P','p','Q','q','R','r','S','s','T','t','U','u', 'V','v','W','w','X','x','Y','y','Z','z'})) ODER (FUNKTION WERTLAENGE (EF7) = 4 UND NICHT (&TEIL (EF7,2,1) IN {'A','a','B','b','C','c','D','d','E','e','F','f', 'G','g', 'H','h','I','i','J','j','K','k','L','l','M','m','N','n', 'O','o','P','p','Q','q','R','r','S','s','T','t','U','u', 'V','v','W','w','X','x','Y','y','Z','z',' '})) ODER (FUNKTION WERTLAENGE (EF7) = 4 UND NICHT (&TEIL (EF7,3,1) IN {'A','a','B','b','C','c','D','d','E','e','F','f', 'G','g', 'H','h','I','i','J','j','K','k','L','l','M','m','N','n', 'O','o','P','p','Q','q','R','r','S','s','T','t','U','u', 'V','v','W','w','X','x','Y','y','Z','z',' '})) ODER (FUNKTION WERTLAENGE (EF7) = 4 UND NICHT (&TEIL (EF7,4,1) IN {'A','a','B','b','C','c','D','d','E','e','F','f', 'G','g', 'H','h','I','i','J','j','K','k','L','l','M','m','N','n', 'O','o','P','p','Q','q','R','r','S','s','T','t','U','u', 'V','v','W','w','X','x','Y','y','Z','z',' '})) Fehler - manuelle Korrektur ("Mussfehler") 1 Angabe Name (EF7) ist ungleich A bis Z (Groß- und Kleinschreibung). Von Satzstelle 2 bis 4 sind Leerzeichen zulässig. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
33 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 32 SIG_009 (NICHT EF8 IN MATERIAL STAAT (key)) ODER (EF8 IN {'112','113','114','115','116','182','211','214','216','311','315','316','317','319','321','325','329', '331','338','341','342','343','344','352','510','511','512','513','514','515','517','519','520','521','522','525','528','529','534','535', '542','546','547','548','549'}) Fehler - manuelle Korrektur ("Mussfehler") 1 Signatur Staatsangehörigkeit (EF8) stimmt nicht mit den Einträgen in Schlüsseltabelle STAAT überein. Signatur Staatsangehörigkeit (EF8) stimmt nicht mit den Einträgen in Schlüsseltabelle STAAT überein oder es ist ein Signierschlüssel eines abhängigen Gebietes angegeben. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
34 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 33 SIG_010 (EF9 /= LEER UND EF9 = '000') ODER "Teil 2" (EF9 /= LEER UND EF9 = EF8) ODER "Teil 3" (EF9 /= LEER UND NICHT EF9 IN MATERIAL STAAT (key)) ODER "Teil 4" (EF9 IN {'112','113','114','115','116','182','211','214','216','311','315','316','317','319','321','325','329', '331','338','341','342','343','344','352','510','511','512','513','514','515','517','519','520','521','522','525','528','529','534','535', '542','546','547','548','549'}) Fehler - manuelle Korrektur ("Mussfehler") 1 Signatur weitere Staatsangehörigkeit (EF9) stimmt nicht mit den Einträgen in Schlüsseltabelle STAAT überein Die Signatur der weiteren Staatsangehörigkeit (EF9) ist Deutschland (000) oder die weitere Staaatsangehörigkeit ist gleich der ersten Staatsangehörigkeit oder stimmt nicht mit den Einträgen in Schlüsseltabelle STAAT überein oder es ist ein Signierschlüssel eines abhängigen Gebietes angegeben. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
35 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 34 SIG_011 (EF3 IN {LEER,'9000','9500','9990'} ODER &fkt_SIG_011() = '0' ODER NICHT (EF1 IN MATERIAL HOCHSCHULSTANDORT (key = &fkt_SIG_011(); bundesland))) Fehler - manuelle Korrektur ("Mussfehler") 1 Falsche Signatur bei Hochschulstandort (EF3) Die Kombination Berichtsland und Hochschulnummer laut Schlüsseltabelle HOCHSCHULFACHBEREICH in Kombination mit Schlüsseltabelle HOCHSCHULSTANDORT nicht zulässig. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
36 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 35 SIG_012 FUNKTION WERTLAENGE (EF10) /= 2 ODER NICHT &NUMERISCH (EF10) ODER NICHT EF10 IN {'01','02','03','04','05'} Fehler - manuelle Korrektur ("Mussfehler") 1 Art der Promotion (EF10) ungleich 01 bis 05 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
37 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 36 SIG_013 (EF1 IN {'03','04','05','06','07','09','11','12','13','16'} UND NICHT (EF11 IN MATERIAL STUDIENFACH_LAND (land = EF1; key))) ODER (EF1 IN {'01','02','08','10','14','15'} UND NICHT (EF11 IN MATERIAL STUDIENFACH (key))) Fehler - manuelle Korrektur ("Mussfehler") 1 Falsche Signatur beim Promotionsfach (EF11) Signatur beim Promotionsfach (EF11) stimmt nicht mit den zulässigen Schlüsseln aus Schlüsseltabelle STUDIENFACH_LAND (Landesinterne Studienfächer) bzw. Schlüsseltabelle STUDIENFACH (Bundesschlüssel) überein. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
38 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 37 SIG_014 FUNKTION WERTLAENGE (EF12) /= 1 ODER NICHT &NUMERISCH (EF12) ODER NICHT EF12 IN {'1','2','3','4','5','6'} Fehler - manuelle Korrektur ("Mussfehler") 1 Art der Registrierung als Promovierender (EF12) ungleich 1 bis 6 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
39 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 38 SIG_015 (FUNKTION WERTLAENGE (EF13U1) /= 2) ODER (NICHT &NUMERISCH (EF13U1) ODER NICHT EF13U1 IN {01,02..12}) Fehler - manuelle Korrektur ("Mussfehler") 1 Angabe Promotionsbeginn - Monat (EF13U1) ungleich 01 bis 12 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
40 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 39 SIG_016 (FUNKTION WERTLAENGE (EF13U2) /= 4 ODER NICHT &NUMERISCH (EF13U2)) UND (NICHT EF13U2 IN {1990,1991++EF2}) Fehler - manuelle Korrektur ("Mussfehler") 1 Angabe Promotionsbeginn - Jahr (EF13U2) ungleich 1990 bis Berichtsjahr (EF2) Angabe Promotionsbeginn - Jahr (EF13U2) ungleich 1990 bis Berichtsjahr (EF2). Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
41 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 40 SIG_017 (EF14U1 /= LEER UND FUNKTION WERTLAENGE (EF14U1) /= 2) ODER (EF14U1 /= LEER UND NICHT &NUMERISCH (EF14U1)) ODER (EF12 IN {'5','6'} UND NICHT EF14U1 IN {01,02..12}) Fehler - manuelle Korrektur ("Mussfehler") 1 Art der Registrierung als Promovierender = 5 (Abschluss der Promotion) oder 6 (Abbruch der Promotion) und Angabe Promotionsende - Monat (EF14U1) ungleich 01 bis 12 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
42 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 41 SIG_018 (EF14U2 /= LEER UND FUNKTION WERTLAENGE (EF14U2) /= 4) ODER (EF14U2 /= LEER UND NICHT &NUMERISCH (EF14U2)) ODER (EF12 IN {'5','6'} UND FUNKTION NUMERISCH (EF2) UND FUNKTION NUMERISCH (EF14U2) UND (EF14U2 /= EF2 UND EF14U2 /= EF2 - 1)) Fehler - manuelle Korrektur ("Mussfehler") 1 Art der Registrierung als Promovierender = 5 (Abschluss der Promotion) oder 6 (Abbruch der Promotion) und falsche Angabe bei Promotionsende - Jahr (EF14U2) Art der Registrierung als Promovierender = 5 (Abschluss der Promotion) oder 6 (Abbruch der Promotion) und Angabe Promotionsende - Jahr (EF14U2) ungleich Berichtsjahr oder Berichtsjahr minus 1. Hierbei müssen vorab alle benötigten Felder mit denen gerechnet wird auf numerischen Inhalt geprüft werden. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
43 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 42 SIG_019 FUNKTION WERTLAENGE (EF15) /= 1 ODER NICHT &NUMERISCH (EF15) ODER NICHT EF15 IN {'0','1'} Fehler - manuelle Korrektur ("Mussfehler") 1 Immatrikulation (EF15) ungleich 0 oder 1 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
44 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 43 SIG_020 FUNKTION WERTLAENGE (EF16) /= 1 ODER NICHT &NUMERISCH (EF16) ODER NICHT EF16 IN {'0','1'} Fehler - manuelle Korrektur ("Mussfehler") 1 Teilnahme an einem strukturierten Promotionsprogramm (EF16) ungleich 0 oder 1 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
45 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 44 SIG_021 FUNKTION WERTLAENGE (EF17) /= 1 ODER NICHT &NUMERISCH (EF17) ODER NICHT EF17 IN {'0','1'} Fehler - manuelle Korrektur ("Mussfehler") 1 Beschäftigungsverhältnis an der Hochschule der Promotion (EF17) ungleich 0 oder 1 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
46 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 45 SIG_022 FUNKTION WERTLAENGE (EF18) /= 1 ODER NICHT &NUMERISCH (EF18) ODER NICHT EF18 IN {'1','2'} Fehler - manuelle Korrektur ("Mussfehler") 1 Art der Dissertation (EF18) ungleich 1 oder 2. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
47 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 46 SIG_023 EF19 IN {LEER,'9500'} ODER NICHT (EF19 IN MATERIAL HOCHSCHULEERSTEINSCHREIBUNG (key)) Fehler - manuelle Korrektur ("Mussfehler") 1 Fehlende oder falsche Signatur bei Hochschulstandort der Ersteinschreibung (EF19) Signatur bei Hochschulstandort der Ersteinschreibung (EF19) ist leer bzw. '9500' (Berufsakademie in Deutschland) oder stimmt nicht mit den Einträgen in Schlüsseltabelle HOCHSCHUEERSTEINSCHREIBUNG überein Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
48 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 47 SIG_024 EF20 /= LEER UND (EF20 = '000' ODER NICHT (EF20 IN MATERIAL STAAT (key))) Fehler - manuelle Korrektur ("Mussfehler") 1 Falsche Signatur beim Staat bei Ersteinschreibung an einer Hochschule im Ausland (EF20) Signatur vom Staat bei Ersteinschreibung an einer Hochschule im Ausland (EF20) stimmt nicht mit den Einträgen in Schlüsseltabelle STAAT überein (000 = Deutschland ist nicht zulässig) Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
49 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 48 SIG_025 FUNKTION WERTLAENGE (EF21) /= 1 ODER NICHT &NUMERISCH (EF21) ODER NICHT EF21 IN {'1','2'} Fehler - manuelle Korrektur ("Mussfehler") 1 Semester der Ersteinschreibung (EF21) ist ungleich 1 oder 2 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
50 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 49 SIG_026 (FUNKTION WERTLAENGE (EF22) /= 4 ) ODER (NICHT &NUMERISCH (EF22)) ODER (NICHT EF22 IN {1923,1924++EF2}) Fehler - manuelle Korrektur ("Mussfehler") 1 Jahr der Ersteinschreibung (EF22) ist leer oder ungleich 1923 bis Inhalt aus EF2 (Berichtsjahr) Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
51 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 50 SIG_027 FUNKTION WERTLAENGE (EF23) /= 1 ODER NICHT &NUMERISCH (EF23) ODER NICHT EF23 IN {'0','1'} Fehler - manuelle Korrektur ("Mussfehler") 1 Zur Promotion berechtigende Abschlussprüfung (EF23) ist ungleich 0 oder 1 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
52 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 51 SIG_028 (EF24 /= LEER UND (EF24 IN {'9500'} ODER NICHT (EF24 IN MATERIAL HOCHSCHULFACHBEREICH (key)))) ODER (FUNKTION NUMERISCH (EF24) UND EF24 IN {4000, 4001,4002..4500}) ODER (EF24 IN {'409A','409B','409C','409D','409E'}) Fehler - manuelle Korrektur ("Mussfehler") 1 Falsche Signatur bei der Hochschule der zur Promotion berechtigende, vorangegangenen Abschlussprüfung (EF24) Die Signatur der Hochschule der zur Promotion berechtigende, vorangegangenen Abschlussprüfung (EF24) stimmt nicht mit den zulässigen Schlüsseln aus der Schlüsseltabelle HOCHSCHULFACHBEREICH überein oder es wurde eine Signatur einer Berufsakademie angegeben. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
53 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 52 SIG_029 EF25 /= LEER UND (EF25 = '000' ODER NICHT (EF25 IN MATERIAL STAAT (key))) Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Falsche Signatur vom Staat der Hochschule (zur Promotion) außerhalb Deutschlands Signatur vom Staat der Hochschule der zur Promotion berechtigende, vorgangenen Abschlussprüfung (EF25) stimmt nicht mit den Einträgen in Schlüsseltabelle STAAT überein (000= Deutschland ist nicht zulässig) Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
54 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 53 SIG_030 EF26 IN {'186','187'} ODER (EF1 IN {'03','05','06','07','09','11'} UND (EF26 /= LEER UND NICHT (EF26 IN MATERIAL ABSCHLUSS3STELLER_LAND (land = EF1; key)))) ODER (EF1 IN {'01','02','04','08','10','12','13','14','15','16'} UND (EF26 /= LEER UND NICHT (EF26 IN MATERIAL ABSCHLUSS3STELLER (key)))) Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Falsche Signatur bei der Art der Prüfung (EF26) Die Signatur der Art der Prüfung (EF26), bei einer zur Promotion berechtigende bestandenen Abschlussprüfung, stimmt nicht mit den zulässigen Schlüsseln aus Schlüsseltabelle ABSCHLUSS3STELLER_LAND (Landesinterne_Abschlussprüfung) bzw. Schlüsseltabelle ABSCHLUSS3STELLER (Bundesschlüssel) überein. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
55 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 54 SIG_031 (EF1 IN {'03','04','05','06','07','09','11','12','13','16'} UND EF27 /= LEER UND NICHT (EF27 IN MATERIAL STUDIENFACH_LAND (land = EF1; key))) ODER (EF1 IN {'01','02','08','10','14','15'} UND EF27 /= LEER UND NICHT (EF27 IN MATERIAL STUDIENFACH (key))) Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Falsche Signatur beim 1. Studienfach Die Signatur beim 1. Studienfach (EF27), bei einer zur Promotion berechtigende bestandene Abschlussprüfung, stimmt nicht mit den zulässigen Schlüsseln aus Schlüsseltabelle STUDIENFACH_LAND (Landesinterne Studienfächer) bzw. Schlüsseltabelle STUDIENFACH (Bundesschlüssel) überein Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
56 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 55 SIG_032 (EF28 /= LEER UND FUNKTION WERTLAENGE (EF28) /= 2) ODER (EF28 /= LEER UND (NICHT &NUMERISCH (EF28) ODER NICHT EF28 IN {01,02..12})) Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Monat der Abschlussprüfung (EF28) Angabe des Monats der Abschlussprüfung (EF28), bei einer zur Promotion berechtigende bestandenen Abschlussprüfung, ist ungleich 01 bis 12 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
57 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 56 SIG_033 (EF29 /= LEER UND FUNKTION WERTLAENGE (EF29) /= 4) ODER (EF29 /= LEER UND NICHT &NUMERISCH (EF29)) ODER (EF29 /= LEER UND NICHT EF29 IN {1923,1924++EF2}) Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Fehlende oder falsche Signatur bei Jahr der Abschlussprüfung (EF29) Angabe Jahr der Abschlussprüfung (EF29), bei einer zur Promotion berechtigende bestandenen Abschlussprüfung, ist nicht 1923 bis Berichtsjahr Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
58 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 57 SIG_034 (EF30 /= LEER UND FUNKTION WERTLAENGE (EF30) /= 1) ODER (EF30 /= LEER UND (NICHT &NUMERISCH (EF30) ODER NICHT EF30 IN {'0','1','2','3','4','7','8'})) Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Falsche Signatur Gesamtnote (EF30) Die Signatur der Prüfungsnote (EF30), bei einer zur Promotion berechtigende bestandenen Abschlussprüfung, ist ungleich 0, 1, 2, 3, 4, 7, 8 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
59 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 58 SIG_035 ((FUNKTION WERTLAENGE (EF31) /= 4) ODER (NICHT &NUMERISCH (EF31) ODER NICHT EF31 IN {1923,1924++EF2})) Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Fehlende oder falsche Signatur bei Jahr des Ewerbs der HZB (EF31) Die Signatur des Jahres des Erwerbs der HBZ (EF31), ist ungleich 1923 bis Berichtsjahr Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
60 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 59 SIG_036 NICHT (EF32 IN MATERIAL HZBART (key)) Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Fehlende oder falsche Signatur bei Art der HZB (EF32) Die Signatur der Art der HZB (EF32) fehlt oder stimmt nicht mit den Schlüsseln aus der Schlüsseltabelle HZBART überein. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
61 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 60 SIG_037 NICHT (EF33U1 IN MATERIAL BUNDESLAND (key)) Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Fehlende oder falsche Signatur bei Land des Erwerbs der HZB (EF33U1) Die Signatur Land des Erwerbs der HZB (EF33U1) fehlt oder stimmt nicht mit den Schlüsseln aus der Schlüsseltabelle BUNDESLAND überein. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
62 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 61 SIG_038 ((FUNKTION WERTLAENGE (EF33U2) /= 3) ODER (NICHT &NUMERISCH (EF33U2) ODER NICHT EF33U2 IN {000,001..999})) Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Fehlende oder falsche Signaturbei Kreis bzw. Staat des Erwerbs der HZB (EF33U2) Die Signatur Kreis bzw. Staat des Erwerbs der HZB (EF33U2) fehlt oder stimmt nicht mit den Schlüsseln 000,001..999 überein. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
63 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 62 UF_001M (EF6U2 <'12' UND FUNKTION NUMERISCH (EF2) UND FUNKTION NUMERISCH (EF6U3) UND (FUNKTION ALS_GANZZAHL (EF2) - FUNKTION ALS_GANZZAHL (EF6U3)) <20) ODER (EF6U2 = '12' UND FUNKTION NUMERISCH (EF2) UND FUNKTION NUMERISCH (EF6U3) UND (FUNKTION ALS_GANZZAHL (EF2) - FUNKTION ALS_GANZZAHL (EF6U3)-1) <20) Fehler - manuelle Korrektur ("Mussfehler") 1 Promovierender jünger als 20 Promovierende sind jünger als 20 Jahre. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
64 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 63 UF_003M (EF2 > '2017' UND EF12 = '1' UND EF13U1 < '12' UND EF13U2 /= LEER UND EF13U2 < EF2) ODER (EF2 > '2017' UND EF12 = '1' UND EF13U1 = '12' UND EF13U2 /= LEER UND EF13U2 < (EF2 - 1)) Fehler - manuelle Korrektur ("Mussfehler") 1 Bei Erstregistrierung ist das Jahr des Promotionsbeginns kleiner als das Berichtsjahr. Ein Erstregistrierter mit Promotionsbeginn in den Monaten Januar-November, darf kein Berichtsjahr kleiner als das Jahr des Promotionsbeginns aufweisen.Ausnahme sind Erstregistrierte im Dezember, bei denen darf die Abweichung bei maximal minus 1 Jahr liegen. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
65 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 64 UF_004K EF12 = '2' UND EF13U2 = EF2 Prüfhinweis - manuelle Korrektur ("Kannfehler") 1 Bei Neuregistrierung ist das Jahr des Promotionsbeginns gleich dem Berichtsjahr Bei Neuregistrierung ist das Jahr des Promotionsbeginns gleich dem Berichtsjahr. Promotionsbeginn gleich Berichtsjahr EF13U2=BJ kann auch bei Neuregistrierten vorkommen, z.B. wenn hier eine zweite Promotion begonnen wird, nach einer ersten erfolgreich beendeten Promotion. Da dies aber nicht den Regelfall darstellt (häufiger sind vsl. Hochschulwechsler mit Promotionsbeginnen vor dem Berichtsjahr, ist hier zumindest ein Kann-Fehler vorgesehen. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
66 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 65 UF_005M EF12 = '3' UND EF13U2 = EF2 Fehler - manuelle Korrektur ("Mussfehler") 1 Bei Registrierung als aktive Fortsetzung ist das Jahr des Promotionsbeginn gleich dem Berichtsjahr Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
67 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 66 UF_006M EF13U2 > EF2 UND EF13U2 /= LEER Fehler - manuelle Korrektur ("Mussfehler") 1 Jahr des Promotionsbeginns liegt nach dem Berichtsjahr Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
68 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 67 UF_007M (EF2 >= '2018' UND EF13U2 > EF14U2) Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Jahr des Promotionsbeginns ist größer als das Jahr des Promotionsendes Ab 2018 : Jahr des Promotionsbeginns ist größer als das Jahr des Promotionsendes. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
69 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 68 UF_008M (EF1 /= {'09'} UND EF3 /= {'1240','0180'} UND EF29 /= LEER UND (EF13U2 <(EF29 - 2)) UND NICHT EF11 IN {'107', '185'}) ODER (EF3 = {'1240'} UND EF29 /= LEER UND (EF13U2 <(EF29 - 2)) UND NICHT EF11 IN {'107','185','135'}) ODER (EF3 = {'0180'} UND EF29 /= LEER UND (EF13U2 <(EF29 - 2)) UND NICHT EF11 IN {'107','185','E10','E11'}) ODER (EF1 = {'09'} UND EF3 /= {'1322'} UND EF29 /=LEER UND (EF13U2 < (EF29 - 2)) UND NICHT EF11 IN {'107', '185', 'a47', 'a58', 'a80', 'a81', 'a82', 'a83', 'a84', 'b59', 'b68', 'g05', 'g21', 'g73', 'h32', 'h36', 'i74'}) ODER (EF3 = {'1322'} UND EF29 /= LEER UND (EF13U2 <(EF29 - 2)) UND NICHT EF11 IN {'156', '021', '107', '185', 'a47', 'a58', 'a80', 'a81', 'a82', 'a83', 'a84', 'b59', 'b68', 'g05', 'g21', 'g73', 'h32', 'h36', 'i74'}) Fehler - manuelle Korrektur ("Mussfehler") 1 Der Promotionsbeginn darf bei Promotionen mit Ausnahme der Medizinpromotionen zeitlich maximal 2 Jahre vor dem Erwerb des promotionsberechtigenden Abschlusses liegen. Ausnahmen HS Bayern (Landesinterne Schlüssel für Medizinpromotionen ergänzt), HS 1322 (Tiermedizin und BWL), HS 0180 (Landesinterne Schlüssel für Medizinpromotionen ergänzt). Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
70 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 69 UF_009M EF14U1 /= 12 UND EF14U2 /= LEER UND EF14U2 <= (EF2 - 1) Fehler - manuelle Korrektur ("Mussfehler") 1 Das Promotionsende liegt mehr als 1 Kalenderjahr vor dem Berichtsjahr. Das aktuelle Berichtsjahr erfasst abgeschlossene Promotionen von Dezember des Vorjahres bis Dezember des Berichtsjahres. Der Fehler dient der Vermeidung von Doppelmeldungen von abgeschlossenen Promotionen. Es ist zu klären, ob die abgeschlossenen Promotionen bereits im vergangenen Berichtsjahr gemeldet wurden. Wurden die abgeschlossenen Promotionen im vergangenen Berichtsjahr gemeldet, sind diese nicht erneut für das aktuelle Berichtsjahr zu melden, d.h. zu löschen. Wurden die Meldungen jedoch im vergangenen Berichtsjahr versehentlich nicht gemeldet, ist EF14U1 = 12 (Monat des Abschlusses) zu setzen. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
71 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 70 UF_010M EF14U2 > EF2 Fehler - manuelle Korrektur ("Mussfehler") 1 Das Promotionsende liegt zeitlich nach dem Berichtsjahr. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
72 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 71 UF_011M NICHT EF12 IN {'6'} UND EF14U2 /= LEER UND EF29 = LEER Fehler - manuelle Korrektur ("Mussfehler") 1 Bei Abschluss der Promotion fehlt das Jahr des Prüfungsabschlusses der zur Promotion berechtigende Abschlussprüfung, obwohl das Jahr des Promotionsende angegeben ist. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
73 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 72 UF_012M NICHT EF12 IN {'6'} UND EF14U2 < EF29 UND EF14U2 /= LEER Fehler - manuelle Korrektur ("Mussfehler") 1 Bei Abschluss der Promotion liegt das Jahr des Promotionsende vor dem Jahr des Prüfungsabschlusses der zur Promotion berechtigende Abschlussprüfung. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
74 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 73 UF_013M (EF14U1 /= LEER ODER EF14U2 /= LEER) UND NICHT EF12 IN {'5','6'} Fehler - manuelle Korrektur ("Mussfehler") 1 Angaben zum Promotionsende sind vorhanden, es fehlt bei Art der Registrierung die Angabe ob Abschluss oder Abbruch der Promotion vorliegt Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
75 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 74 UF_014M ((EF6U2 < '12' UND EF22 /= LEER UND FUNKTION NUMERISCH (EF6U3) UND FUNKTION NUMERISCH (EF22) UND (FUNKTION ALS_GANZZAHL (EF22) - FUNKTION ALS_GANZZAHL (EF6U3)) <11) ODER (EF6U2 = '12' UND EF22 /= LEER UND FUNKTION NUMERISCH (EF6U3) UND FUNKTION NUMERISCH (EF22) UND (FUNKTION ALS_GANZZAHL (EF22) - FUNKTION ALS_GANZZAHL (EF6U3) -1) <11)) Fehler - manuelle Korrektur ("Mussfehler") 1 Bei der Ersteinschreibung war der Promovierende jünger als 11 Jahre. Bei der Ersteinschreibung war der Promovierende jünger als 11 Jahre. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
76 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 75 UF_015K (EF6U2 < '12' UND EF22 /= LEER UND FUNKTION NUMERISCH (EF6U3) UND FUNKTION NUMERISCH (EF22) UND ((FUNKTION ALS_GANZZAHL(EF22) - FUNKTION ALS_GANZZAHL(EF6U3)) >= 11) UND ((FUNKTION ALS_GANZZAHL(EF22) - FUNKTION ALS_GANZZAHL(EF6U3)) <= 16)) ODER (EF6U2 = '12' UND EF22 /= LEER UND FUNKTION NUMERISCH (EF6U3) UND FUNKTION NUMERISCH (EF22) UND ((FUNKTION ALS_GANZZAHL(EF22) - FUNKTION ALS_GANZZAHL(EF6U3) -1) >= 11) UND ((FUNKTION ALS_GANZZAHL(EF22) - FUNKTION ALS_GANZZAHL(EF6U3) -1) <= 16)) Prüfhinweis - manuelle Korrektur ("Kannfehler") 1 Bei der Ersteinschreibung war der bzw. die Promovierende zwischen 11 und 16 Jahre alt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
77 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 76 UF_016M ((EF23 /= 0) UND (EF29 <= EF22) UND (EF19 /= '9990') UND (EF29 /= LEER) ODER (EF23 /= 0) UND (EF29 <= EF22) UND (EF19 = '9990') UND (EF12 =1) UND (EF29 /= LEER)) UND (EF37 /= {' b ', 'ab ', ' c','abc','a c',' bc'} ) Fehler - manuelle Korrektur ("Mussfehler") 1 Das Jahr des Prüfungsabschlusses liegt vor oder im Jahr der Ersteinschreibung Jahr der promotionsberechtigenden Abschlussprüfung (EF29) liegt vor dem Jahr oder im Jahr der Ersteinschreibung als Studierender (EF22). Bei Ersteinschreibung in Deutschland: Jahr der promotionsberechtigenden Abschlussprüfung liegt vor bzw. ist gleich dem Jahr der Ersteinschreibung. Bei Ersteinschreibung im Ausland: Hier wird nur bei Erstregistrierungen (EF12 =1) geprüft, ob das Jahr der promotionsberechtigenden Abschlussprüfung vor oder im dem Jahr der Ersteinschreibung liegt. Der Mussfehler wird nicht ausgelöst, wenn eines der beiden Felder durch eine maschinelle Einsetzung befüllt wurde. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
78 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 77 UF_017M ((EF19 /= LEER UND EF19 /= '9990') UND EF20 /= LEER) ODER (EF19 = '9990' UND EF20 = LEER) ODER (EF20 /= LEER UND EF19 /= '9990') Fehler - manuelle Korrektur ("Mussfehler") 1 Angaben zur Hochschule der Ersteinschreibung und Staat der Ersteinschreibung (Ausland) passen nicht zusammen. Hochschulstandort der Ersteinschreibung ist in Deutschland und EF20 (Bei Ersteinschreibung an einer Hochschule außerhalb Deutschlands, der Staat der Hochschule) ist ein Staat angegeben ODER Hochschulstandort der Ersteinschreibung ist 9990 (Ausland) und EF20 (Bei Ersteinschreibung an einer Hochschule außerhalb Deutschlands, der Staat der Hochschule) ist LEER. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
79 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 78 UF_018M EF12 = '5' UND EF23 = '0' Fehler - manuelle Korrektur ("Mussfehler") 1 Abschluss der Promotion ist angegeben (EF12 = 5), aber es liegt kein zur Promotion berechtigender, vorangegangener Abschluss vor. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
80 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 79 UF_019M EF23 = '1' UND (EF24 = LEER ODER EF26 = LEER ODER EF27 = LEER ODER EF28 = LEER ODER EF29 = LEER ODER EF30 = LEER) Fehler - manuelle Korrektur ("Mussfehler") 1 Promotionsberechtigender Abschluss liegt vor, aber es fehlen Angaben dazu. Eine zur Promotion berechtigende, vorangegangene bestandene Abschlussprüfung liegt vor, aber die Angaben zur Hochschule der Abschlussprüfung für Promotion, Staat der Hochschule der Abschlussprüfung für Promotion, Art der Abschlussprüfung für Promotion, zum 1. Studienfach, zum Monat des Prüfungsabschlusses, Jahr des Prüfungsabschlusses für Promotion und Gesamtnote sind nicht vollständig vorhanden. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
81 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 80 UF_020M EF23 = '1' UND EF30 = '9' Fehler - manuelle Korrektur ("Mussfehler") 1 Die Signatur der Prüfungsnote (EF30), bei einer zur Promotion berechtigende Abschlussprüfung ist gleich "9" (nicht bestanden). Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
82 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 81 UF_021M NICHT EF1 IN {'02','09','14'} UND NICHT EF24 IN {'1110','1330','0530','5501','5503','5312','5313', '5314', '5315'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3 UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,98,99}))) ODER EF1 IN {'09','14'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3 UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,88,98,99}))) ODER EF1 IN {'02'} UND EF27 /= '135' UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3 UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,98,99}))) ODER EF1 IN {'02'} UND EF27 = '135' UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3 UND NICHT (&TEIL (EF26,2,2) IN {01,02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,68,69,78,82,88,93,98,99}))) ODER EF24 IN {'1330'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3 UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,88,94,98,99}))) ODER EF24 IN {'0530'} UND NICHT EF27 IN {'042','135','764'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3 UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,98,99}))) ODER EF24 IN {'0530'} UND EF27 IN {'042','135','764'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3 UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,82,88,98,99}))) ODER EF24 IN {'5501','5503'} UND NICHT EF27 IN {'042'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3 UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,98,99}))) ODER EF24 IN {'5501','5503'} UND EF27 IN {'042'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3 UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,84,90,98,99}))) ODER EF24 IN {'5312','5313', '5314', '5315'} UND NICHT EF27 IN {'042','673','768'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3 UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,98,99}))) ODER EF24 IN {'5312','5313', '5314', '5315'} UND EF27 IN {'042','673','768'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3 UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,84,90,98,99}))) ODER EF24 IN {'1110'} UND NICHT EF27 IN {'135', '593'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3 UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,98,99}))) ODER EF24 IN {'1110'} UND EF27 IN {'135', '593'} UND ((EF30 = '7' UND FUNKTION WERTLAENGE (EF26) = 3 UND NICHT (&TEIL (EF26,2,2) IN {02,08,09,15,16,19,20..50,52,55,57,58,60,61..67,88,98,99}))) Fehler - manuelle Korrektur ("Mussfehler") 1 Die nur bei Staats- und Magisterprüfungen zulässige Gesamtnote 7 kommt auch bei anderen Abschlüssen vor. Die nur bei Staats- und Magisterprüfungen zulässige Gesamtnote 7 kommt auch bei anderen Abschlüssen vor (Teil 1 der Kontrolle gilt nicht für Bayern, Sachsen, und Hamburg und nicht für die Hochschulen U Osnabrück, Hochschule Osnabrück mit allen Standorten und die Hochschule Braunschweig Wolfenbüttel mit allen Standorten und die Universität Köln). In Bayern und Sachsen ist die Gesamtnote 7 auch bei Abschluss "88" Master an Universitäten (Abschluss vorausgesetzt) zulässig (Teil 2 der Kontrolle). In Hamburg ist im Studienfach Rechtswissenschaft die Gesamtnote 7 auch bei Universitätsbachelor (68,01,93,82) und Universitätsmaster (69,78,88) zulässig (Teil 3 und 4 der Kontrolle). An der Uni Würzburg ist die Gesamtnote 7 zusätzlich auch bei Abschluss "94" Abschlusszeugnis/Zertifikat zulässig (Teil 5 der Kontrolle). Teil 6 und 7 ist für die U Osnabrück. Hier ist bei den Fächern 042, 135 und 764 auch bei den Abschlüssen 82 und 88 die Gesamtnote 7 zulässig. Teil 8 und 9 ist für die Hochschule Osnabrück mit allen Standorten. Hier ist bei dem Fach 042 auch bei den Abschlüssen 84 und 90 die Gesamtnote 7 zulässig. Teil 10 und 11 ist für die Hochschule Braunschweig Wolfenbüttel mit allen Standorten. Hier ist bei den Fächern 042, 673 und 768 auch bei den Abschlüssen 84 und 90 die Gesamtnote 7 zulässig. Teil 12 und 13 ist für die Universität Köln. Hier ist bei den Fächern 135 und 593 auch bei dem Abschluss 88 die Gesamtnote 7 zulässig. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
83 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 82 UF_022K EF32 IN {'33','52','77'} UND ((EF6U2 < '12' UND EF31 /= LEER UND FUNKTION NUMERISCH (EF6U3) UND FUNKTION NUMERISCH (EF31) UND ((FUNKTION ALS_GANZZAHL(EF31) - FUNKTION ALS_GANZZAHL(EF6U3)) >= 11) UND ((FUNKTION ALS_GANZZAHL(EF31) - FUNKTION ALS_GANZZAHL(EF6U3)) <= 14)) ODER (EF6U2 = '12' UND EF31 /= LEER UND FUNKTION NUMERISCH (EF6U3) UND FUNKTION NUMERISCH (EF31) UND ((FUNKTION ALS_GANZZAHL(EF31) - FUNKTION ALS_GANZZAHL(EF6U3) -1) >= 11) UND ((FUNKTION ALS_GANZZAHL(EF31) - FUNKTION ALS_GANZZAHL(EF6U3) -1) <= 14))) Prüfhinweis - manuelle Korrektur ("Kannfehler") 1 Wenn Art der HZB Begabtenprüfung: Promovierender war bei Erwerb der Hochschulzugangsberechtigung zwischen 11 - 14 Jahre alt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
84 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 83 UF_023K (EF6U2 < '12' UND EF31 /= LEER UND FUNKTION NUMERISCH (EF6U3) UND FUNKTION NUMERISCH (EF31) UND ((FUNKTION ALS_GANZZAHL(EF31) - FUNKTION ALS_GANZZAHL(EF6U3)) >= 11) UND ((FUNKTION ALS_GANZZAHL(EF31) - FUNKTION ALS_GANZZAHL(EF6U3)) <= 16)) ODER (EF6U2 = '12' UND EF31 /= LEER UND FUNKTION NUMERISCH (EF6U3) UND FUNKTION NUMERISCH (EF31) UND ((FUNKTION ALS_GANZZAHL(EF31) - FUNKTION ALS_GANZZAHL(EF6U3) -1) >= 11) UND ((FUNKTION ALS_GANZZAHL(EF31) - FUNKTION ALS_GANZZAHL(EF6U3) -1) <= 16)) Prüfhinweis - manuelle Korrektur ("Kannfehler") 1 Promovierender war bei Erwerb der Hochschulzugangsberechtigung zwischen 11 - 16 Jahre alt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
85 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 84 UF_024M ((EF6U2 < '12' UND EF31 /= LEER UND FUNKTION NUMERISCH (EF6U3) UND FUNKTION NUMERISCH (EF31) UND (FUNKTION ALS_GANZZAHL (EF31) - FUNKTION ALS_GANZZAHL (EF6U3)) <11) ODER (EF6U2 = '12' UND EF31 /= LEER UND FUNKTION NUMERISCH (EF6U3) UND FUNKTION NUMERISCH (EF31) UND (FUNKTION ALS_GANZZAHL (EF31) - FUNKTION ALS_GANZZAHL (EF6U3) -1) <11)) Fehler - manuelle Korrektur ("Mussfehler") 1 Promovierender war bei Erwerb der Hochschulzugangsberechtigung jünger als 11 Jahre. Promovierender war bei Erwerb derHochschulzugangsberechtigung jünger als 11 Jahre. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
86 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 85 UF_025M EF20 = LEER UND EF22 /= LEER UND EF31 /= LEER UND EF22 < EF31 Fehler - manuelle Korrektur ("Mussfehler") 1 Bei Ersteinschreibung in Deutschland liegt das Jahr der Ersteinschreibung vor dem Jahr des Erwerbs der Hochschulzugangsberechtigung. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
87 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 86 UF_026M (EF32 IN {'31','51','76'} UND EF33U1 = '99') ODER (EF32 IN {'39','59','79','17','47','67'} UND EF33U1 IN {'01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16'}) ODER (NICHT EF32 IN {'39','59','79','17','47','67'} UND EF33U1 = '99') Fehler - manuelle Korrektur ("Mussfehler") 1 Unplausible Angaben zwischen Art und Land des Erwerbs der HZB. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
88 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 87 UF_027M (EF33U1 IN {'01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16'} UND NICHT (&KONKATENIEREN (EF33U1, EF33U2) IN MATERIAL KREISE (key))) ODER (EF33U1 = '98' UND EF33U2 /= '999') Fehler - manuelle Korrektur ("Mussfehler") 1 Falsche Kreiskennziffer bei Kreis des Erwerbs der HZB in Deutschland. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
89 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 88 UF_028M (EF33U1 = '99' UND NICHT (EF33U2 IN MATERIAL STAAT (key))) ODER (EF33U1 = '99' UND EF33U2 = '000') Fehler - manuelle Korrektur ("Mussfehler") 1 Falscher Länderschlüssel bei Erwerb der HZB außerhalb Deutschlands Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
90 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 89 UF_029M (EF24 /= LEER UND EF24 /= '9990' UND EF25 /= LEER) ODER (EF24 = '9990' UND EF25 = LEER) ODER (EF25 /= LEER UND EF24 /= '9990') Fehler - manuelle Korrektur ("Mussfehler") 1 Angaben zum Hochschulstandort und Staat der Ersteinschreibung (Ausland) der vorangegangenen Abschlussprüfung passen nicht zusammen. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
91 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 90 UF_030K (EF1 /= {'09'} UND (EF13U2 < (EF29 - 5)) UND (EF11 IN { '107', '185' } UND EF13U2 /= LEER)) ODER (EF1 = {'09'} UND (EF13U2 < (EF29 - 5)) UND (EF11 IN { '107', '185', 'a47', 'a58', 'a80', 'a81', 'a82', 'a83', 'a84', 'b59', 'b68', 'g05', 'g21', 'g73', 'h32', 'h36', 'i74' } UND EF13U2 /= LEER)) Prüfhinweis - manuelle Korrektur ("Kannfehler") 1 Korrigieren Sie bitte Ihre Angabe. Der Promotionsbeginn darf bei Medizinpromotionen zeitlich maximal 5 Jahre vor dem Erwerb des promotionsberechtigenden Abschlusses liegen. Ausnahmen HS Bayern: Landesinterne Schlüssel für Medizinpromotionen ergänzt. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
92 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 91 UF_031K (EF2 >= '2018' UND (NICHT EF12 IN {'6'} UND EF13U2 = EF14U2)) Prüfhinweis - manuelle Korrektur ("Kannfehler") 1 Jahr des Promotionsbeginns ist gleich dem Jahr des Promotionsende Ab 2018 : Jahr des Promotionsbeginns ist gleich dem Jahr des Promotionsende. Nur bei Abbruch der Promotion (EF12 = 6) ist das gleiche Jahr zulässig. Kannfehler dient als Hinweis zur Prüfung Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
93 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 92 UF_032M ((EF13U2 * 100 + EF13U1) - (EF6U3 *100 + EF6U2) < 2000) UND (EF6U3 /= LEER) UND (EF13U2 /= LEER) UND (EF35 /= {' c','abc','a c',' bc'}) Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Promovierende sind zu Beginn der Promotion jünger als 20 Jahre. Promovierende sind zu Beginn der Promotion jünger als 20 Jahre, es erfolgt ein Vergleich von Geburtsdatum und Beginn der Promotion. Von diesem Mussfehler ausgenommen sind Promovierende bei denen der Beginn der Promotion zum Abschluss der Datenaufbereitung maschinell eingesetzt wurde, da dieser Wert der Hochschule nicht bekannt ist. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
94 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 93 UF_033K (EF13U2 - EF6U3) > 90 UND EF13U2 /= LEER UND EF6U3 /= LEER Prüfhinweis - manuelle Korrektur ("Kannfehler") 1 Korrigieren Sie bitte Ihre Angabe. Promovierende sind zu Beginn der Promotion älter als 90 Jahre. Promovierende sind zu Beginn der Promotion älter als 90 Jahre, es erfolgt ein Vergleich von Geburtsdatum und Beginn der Promotion. Dies ist in Einzelfällen möglich. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
95 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 94 UF_034M (EF14U2 /= LEER UND EF14U2 = EF13U2 UND EF13U1 >= EF14U1) UND (EF35 /= {' c','abc','a c',' bc'}) Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Monat Promotionsbeginns ist größer oder gleich dem Monat des Promotionsendes, wenn Promotionsbeginn und -ende im selben Jahr liegen. Der Monat des Promotionsbeginns ist größer oder gleich dem Monat des Promotionsendes, wenn Promotionsbeginn und -ende im selben Jahr liegen. Von diesem Mussfehler ausgenommen sind Promovierende bei denen der Beginn der Promotion zum Abschluss der Datenaufbereitung maschinell eingesetzt wurde. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
96 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 95 UF_035M ((EF13U2 <= EF22 UND EF19 /= '9990' UND EF13U2 /= LEER) ODER (EF13U2 < EF22 UND EF19 = '9990' UND EF13U2 /= LEER)) UND (EF35 /= {' c','abc','a c',' bc'} UND EF37 /= {' b ','abc','ab ',' bc'}) Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Promotionsbeginn liegt vor Ersteinschreibung als Studierender. Der Promotionsbeginn liegt vor der Ersteinschreibung als Studierender. Bei Ersteinschreibung in Deutschland: Jahr des Promotionsbeginns liegt vor bzw. ist gleich dem Jahr der Ersteinschreibung. Bei Ersteinschreibung im Ausland: Jahr des Promotionsbeginns liegt vor dem Jahr der Ersteinschreibung. Von diesem Mussfehler ausgenommen sind Promovierende bei denen der Beginn der Promotion bzw. das Jahr der Ersteinschreibung zum Abschluss der Datenaufbereitung maschinell eingesetzt wurde. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
97 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 96 UF_036M ((EF13U2 <= EF31 UND EF33U1 /= '99' UND EF13U2 /= LEER) ODER (EF13U2 < EF31 UND EF33U1 = '99' UND EF13U2 /= LEER)) UND (EF35 /= {' c','abc','a c',' bc'} UND EF38 /= {'a ','abc','ab ','a c'}) Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Promotionsbeginn liegt vor Erwerb der HZB. Der Promotionsbeginn liegt vor dem Erwerb der HZB. Bei HZB Erwerb in Deutschland: Jahr des Promotionsbeginns liegt vor bzw. ist gleich dem Jahr des HZB Erwerbs. Bei HZB Erwerb im Ausland: Jahr des Promotionsbeginns liegt vor dem Jahr des HZB Erwerbs. Von diesem Mussfehler ausgenommen sind Promovierende bei denen der Beginn der Promotion bzw. das Jahr des Erwerbs der HZB zum Abschluss der Datenaufbereitung maschinell eingesetzt wurde. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
98 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 97 UF_037M ((EF23 /= 0) UND (EF29 /= LEER) UND (EF29 - 2 <= EF22) UND (EF12 = 1) UND (EF37 /= {' b ', 'ab ',' c','abc','a c',' bc'} )) Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Bei Erstregistrierungen: Zwischen Jahr promotionsberechtigender Abschlussprüfung und Ersteinschreibung als Studierender liegen nur ein oder zwei Jahre. Bei Erstregistrierungen: Zwischen dem Jahr der promotionsberechtigenden Abschlussprüfung (EF29) und dem Jahr der Ersteinschreibung als Studierende/r (EF22) liegen ein oder zwei Jahre. Durchschnittliche Studiendauer liegt bei acht Semestern, daher unplausibel. Der Mussfehler wird nicht ausgelöst, wenn eines der beiden Felder durch eine maschinelle Einsetzung befüllt wurde. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
99 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 98 UF_038K ((EF23 /= 0) UND (EF29 - 2 <= EF22) UND (EF29 /= LEER) UND (EF12 /= 1) UND (EF37 /= {' b ', 'ab ', ' c','abc','a c',' bc'})) Prüfhinweis - manuelle Korrektur ("Kannfehler") 1 Korrigieren Sie bitte Ihre Angabe. Für Fälle außer Erstregistrierung: Zwischen Jahr promotionsberechtigender Abschlussprüfung und Ersteinschreibung als Studierender liegen nur ein oder zwei Jahre. Bei allen Fälle außer Erstregistrierung (Neuregistrierung/aktive Fortsetzung/Unterbrechung/Abschluss/Abbruch): Zwischen dem Jahr der promotionsberechtigenden Abschlussprüfung (EF29) und dem Jahr der Ersteinschreibung als Studierender (EF22) liegen ein oder zwei Jahre. Durchschnittliche Studiendauer liegt bei acht Semestern, daher unplausibel. Der Kannfehler wird nicht ausgelöst, wenn eines der beiden Felder durch eine maschinelle Einsetzung befüllt wurde. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
100 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 99 UF_039M ((EF23 /= 0) UND (EF29/= LEER) UND (EF29 <= EF31) UND NICHT (EF32 IN {'31','39','51','59','76','79','17','47','67'}) ODER (EF23 /= 0) UND (EF29/= LEER) UND (EF29 < EF31) UND (EF32 IN {'31','39','51','59','76','79','17','47','67'})) UND (EF37 /= {' c','abc','a c',' bc'} UND EF38 /= {'a ','abc','a c','ab '}) Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Jahr des promotionsberechtigenden Abschlusses liegt zeitlich vor dem Jahr der HZB. Jahr des promotionsberechtigenden Abschlusses liegt zeitlich vor dem Jahr der HZB. Bei HZB Erwerb in Deutschland: Jahr des promotionsberechtigenden Abschlusses (EF29) liegt vor oder im Jahr der HZB (EF31). Bei HZB Erwerb im Ausland: Jahr des promotionsberechtigenden Abschlusses (EF29) liegt vor dem Jahr der HZB (EF31). Der Mussfehler wird nicht ausgelöst, wenn eines der beiden Felder durch eine maschinelle Einsetzung befüllt wurde. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
101 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 100 UF_040M ((EF23 /= 0) UND (EF29 /= LEER) UND (EF29 - 2 <= EF31) UND (EF12 = 1) UND NICHT (EF32 IN {'31','39','51','59','76','79','17','47','67'})) UND (EF37 /= {' c','abc','a c',' bc'} UND EF38 /= {'a ','abc','a c','ab '}) Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Bei HZB Erwerb in Deutschland und Erstregistrierung: Zwischen dem Jahr des promotionsberechtigenden Abschlusses und dem Jahr der HZB liegen nur ein bis zwei Jahre. Bei HZB Erwerb in Deutschland: Hier wird nur bei Erstregistrierungen (EF12 =1) geprüft, ob zwischen dem Jahr des promotionsberechtigenden Abschlusses (EF29) und dem Jahr der HZB (EF31) ein oder zwei Jahre liegen. Durchschnittliche Studiendauer liegt bei acht Semestern, daher unplausibel. Der Mussfehler wird nicht ausgelöst, wenn eines der beiden Felder durch eine maschinelle Einsetzung befüllt wurde. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
102 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 101 UF_041K ((EF23 /= 0) UND (EF29 /= LEER) UND (EF29 - 2 <= EF31) UND (EF12 /= 1)) UND (EF37 /= {' c','abc','a c',' bc'} UND EF38 /= {'a ','abc','a c','ab '}) Prüfhinweis - manuelle Korrektur ("Kannfehler") 1 Korrigieren Sie bitte Ihre Angabe. Für Fälle außer Erstregistrierung: Zwischen dem Jahr des promotionsberechtigenden Abschlusses und dem Jahr der HZB liegen nur ein bis zwei Jahre. Für Fälle außer Erstregistrierung: Jahr des promotionsberechtigenden Abschlusses EF29 liegt ein oder zwei Jahre nach dem Jahr der HZB EF31. Durchschnittliche Studiendauer liegt bei acht Semestern, daher unplausibel. Der Kannfehler wird nicht ausgelöst, wenn eines der beiden Felder durch eine maschinelle Einsetzung befüllt wurde. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
103 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 102 UF_042K ((EF23 /= 0) UND (EF29 /= LEER) UND (EF29 = EF31) UND (EF32 IN {'31','39','51','59','76','79','17','47','67'})) UND (EF37 /= {' c','abc','a c',' bc'} UND EF38 /= {'a ','abc','a c','ab '}) Prüfhinweis - manuelle Korrektur ("Kannfehler") 1 Korrigieren Sie bitte Ihre Angabe. Jahr des promotionsberechtigenden Abschlusses liegt im Jahr der HZB (bei Erwerb der HZB im Ausland). Jahr des promotionsberechtigenden Abschlusses (EF29) und Jahr des HZB Erwerb im Ausland (EF31) liegen im selben Jahr. Der Kannfehler wird nicht ausgelöst, wenn eines der beiden Felder durch eine maschinelle Einsetzung befüllt wurde. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
104 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 103 UF_043M ((EF40 = { '117', '317', '817','506', '591', '592','107', '507', '807', '186', '997'}) UND (EF37 /= {' c','abc','a c',' bc'})) Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Promotionsberechtigende Abschlüsse berechtigen nicht zur Promotion. Es wurden Abschlüsse als promotionsberechtigender Abschluss (EF26) gemeldet, die nicht zur Promotion berechtigen. Der Mussfehler wird nicht ausgelöst, wenn der promotionsberechtigende Abschluss durch eine maschinelle Einsetzung befüllt wurde. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
105 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 104 UF_044M EF8 = '999' Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Staatsangehörigkeit mit "999" (ohne Angabe) signiert, statt Feld leer zu lassen, wenn Angaben nicht bekannt. Für das Merkmal EF8 (Staatsangehörigkeit) wurde die Angabe "999 = ohne Angabe" von den Hochschulen verwendet. Falls die Staatsangehörigkeit nicht bekannt ist, sollte das Feld leer gelassen werden. Es gibt für EF8 eine Setzung, demnach werden Datensätze ohne Angabe der Staatsangehörigkeit nach der Verteilung von Deutschen und Ausländern nach Fächergruppen der jeweiligen Hochschule zugewiesen. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
106 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 105 UF_045K EF1 = '08' UND EF17 = 0 UND EF15 = 0 UND EF36 /= {' c',' bc','a ','abc','ab ','a c'} UND EF13U2 >= '2018' Prüfhinweis - manuelle Korrektur ("Kannfehler") 1 Korrigieren Sie bitte Ihre Angabe. Ihre Eingabe ist unzulässig. Kannfehler Baden-Württemberg ab Promotionsbeginn 2018 entweder Beschäftigung an der Hochschule der Promotion oder Immatrikulation Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
107 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 106 UF_046M EF23 = '0' UND (EF24 /= LEER ODER EF26 /= LEER ODER EF27 /= LEER ODER EF28 /= LEER ODER EF29 /= LEER ODER EF30 /= LEER) Fehler - manuelle Korrektur ("Mussfehler") 1 Korrigieren Sie bitte Ihre Angabe. Laut Merkmal promotionsberechtigender Abschluss (EF23) liegt ein solcher Abschluss nicht vor, aber in den EF24 bis EF30 sind Angaben erfasst. Bitte prüfen Sie ob ein promotionsberechtigender Abschluss vorliegt (Merkmal EF23) Falls kein promotionsberechtigender Abschluss vorliegt, sind etwaige Angaben in den Merkmalen die sich auf den promotionsberechtigenden Abschluss (EF24 bis EF30) beziehen, zu löschen. Falls ein promotionsberechtigender Abschluss vorliegt, ist EF23 anzupassen. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
108 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 107 E_000 EF1 /= LEER Fehler - maschinelle Korrektur 1 Korrigieren Sie bitte Ihre Angabe. In einem vorherigen PL Lauf eingesetzte Schlüssel werden gelöscht. In einem vorherigen PL Lauf eingesetzte Schlüssel in EF39 bis EF50 werden gelöscht und durch die nachfolgenden Einsetzungen neu befüllt. Damit wird sichergestellt das bei Schlüssellöschungen im Liefermaterial auch die vorher eingesetzten Schlüssel gelöscht werden. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
109 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 108 E_001 EF11 /= LEER Fehler - maschinelle Korrektur 1 Einsetzung des Bundessignierschlüssels Promotionsfach in das EF39. Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
110 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 109 E_002 EF26 /= LEER Fehler - maschinelle Korrektur 1 Signierschlüssel Bund vorangegangener Abschluss in EF40 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
111 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 110 E_003 EF27 /= LEER Fehler - maschinelle Korrektur 1 Einsetzung Signierschlüssel Bund vorangegangenes 1. Studienfach in EF41 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
112 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 111 E_004 EF1 /= LEER Fehler - maschinelle Korrektur 1 Einsetzung Sortierschlüssel Bundesland in EF42 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
113 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 112 E_005 REIHE (EF3) IN MATERIAL HOCHSCHULFACHBEREICH(key) Fehler - maschinelle Korrektur 1 Einsetzung Sortierschlüssel bei Hochschule in EF44 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
114 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 113 E_006 EF44 /= LEER Fehler - maschinelle Korrektur 1 Einsetzung Sortierschlüssel Hochschulart in EF43 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
115 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 114 E_007 REIHE (EF3) IN MATERIAL HOCHSCHULFACHBEREICH(key) Fehler - maschinelle Korrektur 1 Einsetzung des Schlüssels der Trägerschaft der Hochschule in EF45 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
116 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 115 E_008 EF3 IN MATERIAL HOCHSCHULFACHBEREICH (key) Fehler - maschinelle Korrektur 1 Einsetzung Gemeindeschlüssel in EF46 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
117 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 116 E_009 EF8 /= LEER Fehler - maschinelle Korrektur 1 Einsetzung Sortierschlüssel Staatsangehörigkeit in EF47 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
118 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 117 E_010 EF6U2 /= LEER UND EF6U3 /= LEER Fehler - maschinelle Korrektur 1 Altersberechnung aus Berichtszeitraum und Geburtmonat und -jahr in EF48 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
119 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 118 E_011 EF39 /= LEER Fehler - maschinelle Korrektur 1 Einsetzung Sortierschlüssel Promotionsfach in EF49 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE
120 PROMOVIERENDE PROMOVIERENDE.Ablauf_Promovierende_ab_2017 VIE_Hochschulstatistik_PL.Promovierende_ab_2017 Syme-L TELEFON EMAIL 26.02.2026 - 13:44 PROMOVIERENDE.Ablauf_Promovierende_ab_2017 119 E_012 EF33U1 /= LEER Fehler - maschinelle Korrektur 1 Korrigieren Sie bitte Ihre Angabe. Umsetzung der alten Kreischlüssel bei Land und Kreis des Erwerbs der HZB auf den Stand SS 2017 in EF50 Freigegeben VIE_Hochschulstatistik_PL.Promovierende_ab_2017.PROMOVIERENDE

BIN
src/de/statspez/plausi/generated/PL-Pruefungen-PROMOVIERENDE_2026_02_26.pdf

Binary file not shown.

3033
src/de/statspez/plausi/generated/PL-Pruefungen-STUD_PRUEF_AB_SS2017_2026_02_18.csv

File diff suppressed because it is too large Load Diff

BIN
src/de/statspez/plausi/generated/PL-Pruefungen-STUD_PRUEF_AB_SS2017_Stand_2026_02_18.pdf

Binary file not shown.

352
src/de/statspez/plausi/generated/Plausi_ERHEBUNG_GASTHOERER_2019.java

@ -6,7 +6,7 @@ import de.statspez.pleditor.generator.runtime.plausi.*;
public class Plausi_ERHEBUNG_GASTHOERER_2019 extends BasePlausi public class Plausi_ERHEBUNG_GASTHOERER_2019 extends BasePlausi
{ {
public double getPlausiSystemVersion() { return 4.0; } public double getPlausiSystemVersion() { return 4.0; }
public String getPlausiVersionString() { return "20241127_092019"; } public String getPlausiVersionString() { return "20260226_082349"; }
public Value prg_Merkmal_Geschlecht(PlausiRuntimeContext context, Variable aFeld) public Value prg_Merkmal_Geschlecht(PlausiRuntimeContext context, Variable aFeld)
{ {
@ -887,12 +887,12 @@ public class Plausi_ERHEBUNG_GASTHOERER_2019 extends BasePlausi
SORT.set(context, ValueFactory.instance().valueFor(InvalidValue.instance())); SORT.set(context, ValueFactory.instance().valueFor(InvalidValue.instance()));
{ {
PlausiRuntimeIterator __loop_iterator53 = SupportLib.iteratorFor(new Material(__material_ref_HOCHSCHULFACHBEREICH, new FeldDeskriptorInterface[] {__material_ref_HOCHSCHULFACHBEREICH.sortKey}, new SatzFilter.FilterBedingung[] {new SatzFilter.FilterBedingung(__material_ref_HOCHSCHULFACHBEREICH.key, 1, EF2.get(context))}, context), context); PlausiRuntimeIterator __loop_iterator15 = SupportLib.iteratorFor(new Material(__material_ref_HOCHSCHULFACHBEREICH, new FeldDeskriptorInterface[] {__material_ref_HOCHSCHULFACHBEREICH.sortKey}, new SatzFilter.FilterBedingung[] {new SatzFilter.FilterBedingung(__material_ref_HOCHSCHULFACHBEREICH.key, 1, EF2.get(context))}, context), context);
try try
{ {
while(__loop_iterator53.hasNext()) while(__loop_iterator15.hasNext())
{ {
SORT.set(context, (Value)__loop_iterator53.next()); SORT.set(context, (Value)__loop_iterator15.next());
if (OperatorLib.ne(context, SORT.get(context), InvalidValue.instance()).asBoolean()) if (OperatorLib.ne(context, SORT.get(context), InvalidValue.instance()).asBoolean())
{ {
EF15.set(context, ValueFactory.instance().valueFor(SORT.get(context))); EF15.set(context, ValueFactory.instance().valueFor(SORT.get(context)));
@ -1016,12 +1016,12 @@ public class Plausi_ERHEBUNG_GASTHOERER_2019 extends BasePlausi
STAATSAN.set(context, ValueFactory.instance().valueFor(InvalidValue.instance())); STAATSAN.set(context, ValueFactory.instance().valueFor(InvalidValue.instance()));
{ {
PlausiRuntimeIterator __loop_iterator54 = SupportLib.iteratorFor(new Material(__material_ref_STAAT, new FeldDeskriptorInterface[] {__material_ref_STAAT.sortKey}, new SatzFilter.FilterBedingung[] {new SatzFilter.FilterBedingung(__material_ref_STAAT.key, 1, EF7.get(context))}, context), context); PlausiRuntimeIterator __loop_iterator16 = SupportLib.iteratorFor(new Material(__material_ref_STAAT, new FeldDeskriptorInterface[] {__material_ref_STAAT.sortKey}, new SatzFilter.FilterBedingung[] {new SatzFilter.FilterBedingung(__material_ref_STAAT.key, 1, EF7.get(context))}, context), context);
try try
{ {
while(__loop_iterator54.hasNext()) while(__loop_iterator16.hasNext())
{ {
STAATSAN.set(context, (Value)__loop_iterator54.next()); STAATSAN.set(context, (Value)__loop_iterator16.next());
if (OperatorLib.ne(context, STAATSAN.get(context), InvalidValue.instance()).asBoolean()) if (OperatorLib.ne(context, STAATSAN.get(context), InvalidValue.instance()).asBoolean())
{ {
EF16.set(context, ValueFactory.instance().valueFor(STAATSAN.get(context))); EF16.set(context, ValueFactory.instance().valueFor(STAATSAN.get(context)));
@ -1092,13 +1092,13 @@ public class Plausi_ERHEBUNG_GASTHOERER_2019 extends BasePlausi
RICHTUNG.set(context, ValueFactory.instance().valueFor(InvalidValue.instance())); RICHTUNG.set(context, ValueFactory.instance().valueFor(InvalidValue.instance()));
{ {
PlausiRuntimeIterator __loop_iterator55 = SupportLib.iteratorFor(new Material(__material_ref_FACHRICHTUNGENGAST, new FeldDeskriptorInterface[] {__material_ref_FACHRICHTUNGENGAST.fg, __material_ref_FACHRICHTUNGENGAST.sortKey}, new SatzFilter.FilterBedingung[] {new SatzFilter.FilterBedingung(__material_ref_FACHRICHTUNGENGAST.key, 1, EF9.get(context))}, context), context); PlausiRuntimeIterator __loop_iterator17 = SupportLib.iteratorFor(new Material(__material_ref_FACHRICHTUNGENGAST, new FeldDeskriptorInterface[] {__material_ref_FACHRICHTUNGENGAST.fg, __material_ref_FACHRICHTUNGENGAST.sortKey}, new SatzFilter.FilterBedingung[] {new SatzFilter.FilterBedingung(__material_ref_FACHRICHTUNGENGAST.key, 1, EF9.get(context))}, context), context);
try try
{ {
while(__loop_iterator55.hasNext()) while(__loop_iterator17.hasNext())
{ {
GRUPPE.set(context, (Value)__loop_iterator55.next()); GRUPPE.set(context, (Value)__loop_iterator17.next());
RICHTUNG.set(context, (Value)__loop_iterator55.next()); RICHTUNG.set(context, (Value)__loop_iterator17.next());
if (vf.valueFor(OperatorLib.ne(context, GRUPPE.get(context), InvalidValue.instance()).asBoolean() && OperatorLib.ne(context, RICHTUNG.get(context), InvalidValue.instance()).asBoolean()).asBoolean()) if (vf.valueFor(OperatorLib.ne(context, GRUPPE.get(context), InvalidValue.instance()).asBoolean() && OperatorLib.ne(context, RICHTUNG.get(context), InvalidValue.instance()).asBoolean()).asBoolean())
{ {
EF17.set(context, ValueFactory.instance().valueFor(GRUPPE.get(context))); EF17.set(context, ValueFactory.instance().valueFor(GRUPPE.get(context)));
@ -1170,13 +1170,13 @@ public class Plausi_ERHEBUNG_GASTHOERER_2019 extends BasePlausi
RICHTUNG.set(context, ValueFactory.instance().valueFor(InvalidValue.instance())); RICHTUNG.set(context, ValueFactory.instance().valueFor(InvalidValue.instance()));
{ {
PlausiRuntimeIterator __loop_iterator56 = SupportLib.iteratorFor(new Material(__material_ref_FACHRICHTUNGENGAST, new FeldDeskriptorInterface[] {__material_ref_FACHRICHTUNGENGAST.fg, __material_ref_FACHRICHTUNGENGAST.sortKey}, new SatzFilter.FilterBedingung[] {new SatzFilter.FilterBedingung(__material_ref_FACHRICHTUNGENGAST.key, 1, EF10.get(context))}, context), context); PlausiRuntimeIterator __loop_iterator18 = SupportLib.iteratorFor(new Material(__material_ref_FACHRICHTUNGENGAST, new FeldDeskriptorInterface[] {__material_ref_FACHRICHTUNGENGAST.fg, __material_ref_FACHRICHTUNGENGAST.sortKey}, new SatzFilter.FilterBedingung[] {new SatzFilter.FilterBedingung(__material_ref_FACHRICHTUNGENGAST.key, 1, EF10.get(context))}, context), context);
try try
{ {
while(__loop_iterator56.hasNext()) while(__loop_iterator18.hasNext())
{ {
GRUPPE.set(context, (Value)__loop_iterator56.next()); GRUPPE.set(context, (Value)__loop_iterator18.next());
RICHTUNG.set(context, (Value)__loop_iterator56.next()); RICHTUNG.set(context, (Value)__loop_iterator18.next());
if (vf.valueFor(OperatorLib.ne(context, GRUPPE.get(context), InvalidValue.instance()).asBoolean() && OperatorLib.ne(context, RICHTUNG.get(context), InvalidValue.instance()).asBoolean()).asBoolean()) if (vf.valueFor(OperatorLib.ne(context, GRUPPE.get(context), InvalidValue.instance()).asBoolean() && OperatorLib.ne(context, RICHTUNG.get(context), InvalidValue.instance()).asBoolean()).asBoolean())
{ {
EF19.set(context, ValueFactory.instance().valueFor(GRUPPE.get(context))); EF19.set(context, ValueFactory.instance().valueFor(GRUPPE.get(context)));
@ -1248,13 +1248,13 @@ public class Plausi_ERHEBUNG_GASTHOERER_2019 extends BasePlausi
RICHTUNG.set(context, ValueFactory.instance().valueFor(InvalidValue.instance())); RICHTUNG.set(context, ValueFactory.instance().valueFor(InvalidValue.instance()));
{ {
PlausiRuntimeIterator __loop_iterator57 = SupportLib.iteratorFor(new Material(__material_ref_FACHRICHTUNGENGAST, new FeldDeskriptorInterface[] {__material_ref_FACHRICHTUNGENGAST.fg, __material_ref_FACHRICHTUNGENGAST.sortKey}, new SatzFilter.FilterBedingung[] {new SatzFilter.FilterBedingung(__material_ref_FACHRICHTUNGENGAST.key, 1, EF11.get(context))}, context), context); PlausiRuntimeIterator __loop_iterator19 = SupportLib.iteratorFor(new Material(__material_ref_FACHRICHTUNGENGAST, new FeldDeskriptorInterface[] {__material_ref_FACHRICHTUNGENGAST.fg, __material_ref_FACHRICHTUNGENGAST.sortKey}, new SatzFilter.FilterBedingung[] {new SatzFilter.FilterBedingung(__material_ref_FACHRICHTUNGENGAST.key, 1, EF11.get(context))}, context), context);
try try
{ {
while(__loop_iterator57.hasNext()) while(__loop_iterator19.hasNext())
{ {
GRUPPE.set(context, (Value)__loop_iterator57.next()); GRUPPE.set(context, (Value)__loop_iterator19.next());
RICHTUNG.set(context, (Value)__loop_iterator57.next()); RICHTUNG.set(context, (Value)__loop_iterator19.next());
if (vf.valueFor(OperatorLib.ne(context, GRUPPE.get(context), InvalidValue.instance()).asBoolean() && OperatorLib.ne(context, RICHTUNG.get(context), InvalidValue.instance()).asBoolean()).asBoolean()) if (vf.valueFor(OperatorLib.ne(context, GRUPPE.get(context), InvalidValue.instance()).asBoolean() && OperatorLib.ne(context, RICHTUNG.get(context), InvalidValue.instance()).asBoolean()).asBoolean())
{ {
EF21.set(context, ValueFactory.instance().valueFor(GRUPPE.get(context))); EF21.set(context, ValueFactory.instance().valueFor(GRUPPE.get(context)));
@ -1864,7 +1864,7 @@ public class Plausi_ERHEBUNG_GASTHOERER_2019 extends BasePlausi
context.startNewPruefSection("Prüfung SIG_05"); context.startNewPruefSection("Prüfung SIG_05");
try try
{ {
if (vf.valueFor(vf.valueFor(vf.valueFor(OperatorLib.ne(context, FunctionLib.WERTLAENGE(context, vf.valueFor(EF2.get(context))), __NUM_LIT_4).asBoolean() || OperatorLib.contains(context, new RangeSeries(new Range[] {new SingleValueRange(__STR_LIT_10), new SingleValueRange(__STR_LIT_11), new SingleValueRange(__STR_LIT_12), new SingleValueRange(__STR_LIT_13), new SingleValueRange(__STR_LIT_14), new SingleValueRange(__STR_LIT_15), new SingleValueRange(__STR_LIT_16), new SingleValueRange(__STR_LIT_17), new SingleValueRange(__STR_LIT_18), new SingleValueRange(__STR_LIT_19), new SingleValueRange(__STR_LIT_20), new SingleValueRange(__STR_LIT_21), new SingleValueRange(__STR_LIT_22), new SingleValueRange(__STR_LIT_23), new SingleValueRange(__STR_LIT_24), new SingleValueRange(__STR_LIT_25), new SingleValueRange(__STR_LIT_26), new SingleValueRange(__STR_LIT_27), new SingleValueRange(__STR_LIT_28), new SingleValueRange(__STR_LIT_29), new SingleValueRange(__STR_LIT_30), new SingleValueRange(__STR_LIT_31), new SingleValueRange(__STR_LIT_32), new SingleValueRange(__STR_LIT_33)}), EF2.get(context)).asBoolean()).asBoolean() || vf.valueFor(FunctionLib.NUMERISCH(context, vf.valueFor(EF2.get(context))).asBoolean() && OperatorLib.contains(context, new RangeSeries(new Range[] {new SingleValueRange(__NUM_LIT_10), new SingleValueRange(__NUM_LIT_11), new SingleValueRange(__NUM_LIT_12), new SequenceRange(__NUM_LIT_13, __NUM_LIT_14, __NUM_LIT_15)}), EF2.get(context)).asBoolean()).asBoolean()).asBoolean() || OperatorLib.not(context, OperatorLib.contains(context, new Material(__material_ref_HOCHSCHULFACHBEREICH, new FeldDeskriptorInterface[] {__material_ref_HOCHSCHULFACHBEREICH.key}, new SatzFilter.FilterBedingung[] {}, context), EF2.get(context))).asBoolean()).asBoolean()) if (vf.valueFor(vf.valueFor(vf.valueFor(OperatorLib.ne(context, FunctionLib.WERTLAENGE(context, vf.valueFor(EF2.get(context))), __NUM_LIT_4).asBoolean() || OperatorLib.contains(context, new RangeSeries(new Range[] {new SingleValueRange(__STR_LIT_10), new SingleValueRange(__STR_LIT_11), new SingleValueRange(__STR_LIT_12), new SingleValueRange(__STR_LIT_13), new SingleValueRange(__STR_LIT_14), new SingleValueRange(__STR_LIT_15), new SingleValueRange(__STR_LIT_16), new SingleValueRange(__STR_LIT_17), new SingleValueRange(__STR_LIT_18), new SingleValueRange(__STR_LIT_19), new SingleValueRange(__STR_LIT_20), new SingleValueRange(__STR_LIT_21), new SingleValueRange(__STR_LIT_22), new SingleValueRange(__STR_LIT_23), new SingleValueRange(__STR_LIT_24), new SingleValueRange(__STR_LIT_25), new SingleValueRange(__STR_LIT_26), new SingleValueRange(__STR_LIT_27), new SingleValueRange(__STR_LIT_28), new SingleValueRange(__STR_LIT_29), new SingleValueRange(__STR_LIT_30), new SingleValueRange(__STR_LIT_31), new SingleValueRange(__STR_LIT_32), new SingleValueRange(__STR_LIT_33), new SingleValueRange(__STR_LIT_34), new SingleValueRange(__STR_LIT_35)}), EF2.get(context)).asBoolean()).asBoolean() || vf.valueFor(FunctionLib.NUMERISCH(context, vf.valueFor(EF2.get(context))).asBoolean() && OperatorLib.contains(context, new RangeSeries(new Range[] {new SingleValueRange(__NUM_LIT_10), new SingleValueRange(__NUM_LIT_11), new SingleValueRange(__NUM_LIT_12), new SequenceRange(__NUM_LIT_13, __NUM_LIT_14, __NUM_LIT_15)}), EF2.get(context)).asBoolean()).asBoolean()).asBoolean() || OperatorLib.not(context, OperatorLib.contains(context, new Material(__material_ref_HOCHSCHULFACHBEREICH, new FeldDeskriptorInterface[] {__material_ref_HOCHSCHULFACHBEREICH.key}, new SatzFilter.FilterBedingung[] {}, context), EF2.get(context))).asBoolean()).asBoolean())
{ {
context.getLogger().trace("Fehler angeschrieben: SIG_05"); context.getLogger().trace("Fehler angeschrieben: SIG_05");
fehler_SIG_05(context, 0, null); fehler_SIG_05(context, 0, null);
@ -1917,7 +1917,7 @@ public class Plausi_ERHEBUNG_GASTHOERER_2019 extends BasePlausi
context.startNewPruefSection("Prüfung SIG_10"); context.startNewPruefSection("Prüfung SIG_10");
try try
{ {
if (vf.valueFor(vf.valueFor(OperatorLib.ne(context, FunctionLib.WERTLAENGE(context, vf.valueFor(EF5.get(context))), __NUM_LIT_1).asBoolean() || OperatorLib.not(context, FunctionLib.NUMERISCH(context, vf.valueFor(EF5.get(context)))).asBoolean()).asBoolean() || OperatorLib.not(context, OperatorLib.contains(context, new RangeSeries(new Range[] {new SingleValueRange(__STR_LIT_1), new SingleValueRange(__STR_LIT_34), new SingleValueRange(__STR_LIT_35), new SingleValueRange(__STR_LIT_36)}), EF5.get(context))).asBoolean()).asBoolean()) if (vf.valueFor(vf.valueFor(OperatorLib.ne(context, FunctionLib.WERTLAENGE(context, vf.valueFor(EF5.get(context))), __NUM_LIT_1).asBoolean() || OperatorLib.not(context, FunctionLib.NUMERISCH(context, vf.valueFor(EF5.get(context)))).asBoolean()).asBoolean() || OperatorLib.not(context, OperatorLib.contains(context, new RangeSeries(new Range[] {new SingleValueRange(__STR_LIT_1), new SingleValueRange(__STR_LIT_36), new SingleValueRange(__STR_LIT_37), new SingleValueRange(__STR_LIT_38)}), EF5.get(context))).asBoolean()).asBoolean())
{ {
context.getLogger().trace("Fehler angeschrieben: SIG_10"); context.getLogger().trace("Fehler angeschrieben: SIG_10");
fehler_SIG_10(context, 0, null); fehler_SIG_10(context, 0, null);
@ -2182,7 +2182,7 @@ public class Plausi_ERHEBUNG_GASTHOERER_2019 extends BasePlausi
context.startNewPruefSection("Prüfung SIG_35"); context.startNewPruefSection("Prüfung SIG_35");
try try
{ {
if (vf.valueFor(vf.valueFor(OperatorLib.ne(context, EF7.get(context), InvalidValue.instance()).asBoolean() && OperatorLib.not(context, OperatorLib.contains(context, new Material(__material_ref_STAAT, new FeldDeskriptorInterface[] {__material_ref_STAAT.key}, new SatzFilter.FilterBedingung[] {}, context), EF7.get(context))).asBoolean()).asBoolean() || OperatorLib.contains(context, new RangeSeries(new Range[] {new SingleValueRange(__STR_LIT_37), new SingleValueRange(__STR_LIT_38), new SingleValueRange(__STR_LIT_39), new SingleValueRange(__STR_LIT_40), new SingleValueRange(__STR_LIT_41), new SingleValueRange(__STR_LIT_42), new SingleValueRange(__STR_LIT_43), new SingleValueRange(__STR_LIT_44), new SingleValueRange(__STR_LIT_45), new SingleValueRange(__STR_LIT_46), new SingleValueRange(__STR_LIT_47), new SingleValueRange(__STR_LIT_48), new SingleValueRange(__STR_LIT_49), new SingleValueRange(__STR_LIT_50), new SingleValueRange(__STR_LIT_51), new SingleValueRange(__STR_LIT_52), new SingleValueRange(__STR_LIT_53), new SingleValueRange(__STR_LIT_54), new SingleValueRange(__STR_LIT_55), new SingleValueRange(__STR_LIT_56), new SingleValueRange(__STR_LIT_57), new SingleValueRange(__STR_LIT_58), new SingleValueRange(__STR_LIT_59), new SingleValueRange(__STR_LIT_60), new SingleValueRange(__STR_LIT_61), new SingleValueRange(__STR_LIT_62), new SingleValueRange(__STR_LIT_63), new SingleValueRange(__STR_LIT_64), new SingleValueRange(__STR_LIT_65), new SingleValueRange(__STR_LIT_66), new SingleValueRange(__STR_LIT_67), new SingleValueRange(__STR_LIT_68), new SingleValueRange(__STR_LIT_69), new SingleValueRange(__STR_LIT_70), new SingleValueRange(__STR_LIT_71), new SingleValueRange(__STR_LIT_72), new SingleValueRange(__STR_LIT_73), new SingleValueRange(__STR_LIT_74), new SingleValueRange(__STR_LIT_75), new SingleValueRange(__STR_LIT_76), new SingleValueRange(__STR_LIT_77), new SingleValueRange(__STR_LIT_78), new SingleValueRange(__STR_LIT_79), new SingleValueRange(__STR_LIT_80), new SingleValueRange(__STR_LIT_81)}), EF7.get(context)).asBoolean()).asBoolean()) if (vf.valueFor(vf.valueFor(OperatorLib.ne(context, EF7.get(context), InvalidValue.instance()).asBoolean() && OperatorLib.not(context, OperatorLib.contains(context, new Material(__material_ref_STAAT, new FeldDeskriptorInterface[] {__material_ref_STAAT.key}, new SatzFilter.FilterBedingung[] {}, context), EF7.get(context))).asBoolean()).asBoolean() || OperatorLib.contains(context, new RangeSeries(new Range[] {new SingleValueRange(__STR_LIT_39), new SingleValueRange(__STR_LIT_40), new SingleValueRange(__STR_LIT_41), new SingleValueRange(__STR_LIT_42), new SingleValueRange(__STR_LIT_43), new SingleValueRange(__STR_LIT_44), new SingleValueRange(__STR_LIT_45), new SingleValueRange(__STR_LIT_46), new SingleValueRange(__STR_LIT_47), new SingleValueRange(__STR_LIT_48), new SingleValueRange(__STR_LIT_49), new SingleValueRange(__STR_LIT_50), new SingleValueRange(__STR_LIT_51), new SingleValueRange(__STR_LIT_52), new SingleValueRange(__STR_LIT_53), new SingleValueRange(__STR_LIT_54), new SingleValueRange(__STR_LIT_55), new SingleValueRange(__STR_LIT_56), new SingleValueRange(__STR_LIT_57), new SingleValueRange(__STR_LIT_58), new SingleValueRange(__STR_LIT_59), new SingleValueRange(__STR_LIT_60), new SingleValueRange(__STR_LIT_61), new SingleValueRange(__STR_LIT_62), new SingleValueRange(__STR_LIT_63), new SingleValueRange(__STR_LIT_64), new SingleValueRange(__STR_LIT_65), new SingleValueRange(__STR_LIT_66), new SingleValueRange(__STR_LIT_67), new SingleValueRange(__STR_LIT_68), new SingleValueRange(__STR_LIT_69), new SingleValueRange(__STR_LIT_70), new SingleValueRange(__STR_LIT_71), new SingleValueRange(__STR_LIT_72), new SingleValueRange(__STR_LIT_73), new SingleValueRange(__STR_LIT_74), new SingleValueRange(__STR_LIT_75), new SingleValueRange(__STR_LIT_76), new SingleValueRange(__STR_LIT_77), new SingleValueRange(__STR_LIT_78), new SingleValueRange(__STR_LIT_79), new SingleValueRange(__STR_LIT_80), new SingleValueRange(__STR_LIT_81), new SingleValueRange(__STR_LIT_82), new SingleValueRange(__STR_LIT_83)}), EF7.get(context)).asBoolean()).asBoolean())
{ {
context.getLogger().trace("Fehler angeschrieben: SIG_35"); context.getLogger().trace("Fehler angeschrieben: SIG_35");
fehler_SIG_35(context, 0, null); fehler_SIG_35(context, 0, null);
@ -2500,7 +2500,7 @@ public class Plausi_ERHEBUNG_GASTHOERER_2019 extends BasePlausi
context.startNewPruefSection("Prüfung SIG_65"); context.startNewPruefSection("Prüfung SIG_65");
try try
{ {
if (OperatorLib.contains(context, new RangeSeries(new Range[] {new SingleValueRange(__STR_LIT_82), new SingleValueRange(__STR_LIT_83), new SingleValueRange(__STR_LIT_84), new SingleValueRange(__STR_LIT_85), new SingleValueRange(__STR_LIT_86), new SingleValueRange(__STR_LIT_87), new SingleValueRange(__STR_LIT_88), new SingleValueRange(__STR_LIT_89), new SingleValueRange(__STR_LIT_90), new SingleValueRange(__STR_LIT_91), new SingleValueRange(__STR_LIT_92), new SingleValueRange(__STR_LIT_93), new SingleValueRange(__STR_LIT_94), new SingleValueRange(__STR_LIT_95), new SingleValueRange(__STR_LIT_96), new SingleValueRange(__STR_LIT_97), new SingleValueRange(__STR_LIT_98), new SingleValueRange(__STR_LIT_99), new SingleValueRange(__STR_LIT_100), new SingleValueRange(__STR_LIT_101), new SingleValueRange(__STR_LIT_102), new SingleValueRange(__STR_LIT_103), new SingleValueRange(__STR_LIT_104), new SingleValueRange(__STR_LIT_105), new SingleValueRange(__STR_LIT_106), new SingleValueRange(__STR_LIT_107), new SingleValueRange(__STR_LIT_108), new SingleValueRange(__STR_LIT_109), new SingleValueRange(__STR_LIT_110), new SingleValueRange(__STR_LIT_111), new SingleValueRange(__STR_LIT_112), new SingleValueRange(__STR_LIT_113), new SingleValueRange(__STR_LIT_114), new SingleValueRange(__STR_LIT_115), new SingleValueRange(__STR_LIT_116), new SingleValueRange(__STR_LIT_117), new SingleValueRange(__STR_LIT_118), new SingleValueRange(__STR_LIT_119), new SingleValueRange(__STR_LIT_120), new SingleValueRange(__STR_LIT_121), new SingleValueRange(__STR_LIT_122), new SingleValueRange(__STR_LIT_123), new SingleValueRange(__STR_LIT_124), new SingleValueRange(__STR_LIT_125), new SingleValueRange(__STR_LIT_126), new SingleValueRange(__STR_LIT_127), new SingleValueRange(__STR_LIT_128), new SingleValueRange(__STR_LIT_129), new SingleValueRange(__STR_LIT_130), new SingleValueRange(__STR_LIT_131), new SingleValueRange(__STR_LIT_132), new SingleValueRange(__STR_LIT_133), new SingleValueRange(__STR_LIT_134), new SingleValueRange(__STR_LIT_135), new SingleValueRange(__STR_LIT_136), new SingleValueRange(__STR_LIT_137), new SingleValueRange(__STR_LIT_138), new SingleValueRange(__STR_LIT_139), new SingleValueRange(__STR_LIT_140), new SingleValueRange(__STR_LIT_141), new SingleValueRange(__STR_LIT_142), new SingleValueRange(__STR_LIT_143), new SingleValueRange(__STR_LIT_144), new SingleValueRange(__STR_LIT_145), new SingleValueRange(__STR_LIT_146), new SingleValueRange(__STR_LIT_147), new SingleValueRange(__STR_LIT_148), new SingleValueRange(__STR_LIT_149), new SingleValueRange(__STR_LIT_150), new SingleValueRange(__STR_LIT_151), new SingleValueRange(__STR_LIT_152), new SingleValueRange(__STR_LIT_153), new SingleValueRange(__STR_LIT_154), new SingleValueRange(__STR_LIT_155), new SingleValueRange(__STR_LIT_156), new SingleValueRange(__STR_LIT_157), new SingleValueRange(__STR_LIT_158), new SingleValueRange(__STR_LIT_159), new SingleValueRange(__STR_LIT_160)}), EF2.get(context)).asBoolean()) if (OperatorLib.contains(context, new RangeSeries(new Range[] {new SingleValueRange(__STR_LIT_84), new SingleValueRange(__STR_LIT_85), new SingleValueRange(__STR_LIT_86), new SingleValueRange(__STR_LIT_87), new SingleValueRange(__STR_LIT_88), new SingleValueRange(__STR_LIT_89), new SingleValueRange(__STR_LIT_90), new SingleValueRange(__STR_LIT_91), new SingleValueRange(__STR_LIT_92), new SingleValueRange(__STR_LIT_93), new SingleValueRange(__STR_LIT_94), new SingleValueRange(__STR_LIT_95), new SingleValueRange(__STR_LIT_96), new SingleValueRange(__STR_LIT_97), new SingleValueRange(__STR_LIT_98), new SingleValueRange(__STR_LIT_99), new SingleValueRange(__STR_LIT_100), new SingleValueRange(__STR_LIT_101), new SingleValueRange(__STR_LIT_102), new SingleValueRange(__STR_LIT_103), new SingleValueRange(__STR_LIT_104), new SingleValueRange(__STR_LIT_105), new SingleValueRange(__STR_LIT_106), new SingleValueRange(__STR_LIT_107), new SingleValueRange(__STR_LIT_108), new SingleValueRange(__STR_LIT_109), new SingleValueRange(__STR_LIT_110), new SingleValueRange(__STR_LIT_111), new SingleValueRange(__STR_LIT_112), new SingleValueRange(__STR_LIT_113), new SingleValueRange(__STR_LIT_114), new SingleValueRange(__STR_LIT_115), new SingleValueRange(__STR_LIT_116), new SingleValueRange(__STR_LIT_117), new SingleValueRange(__STR_LIT_118), new SingleValueRange(__STR_LIT_119), new SingleValueRange(__STR_LIT_120), new SingleValueRange(__STR_LIT_121), new SingleValueRange(__STR_LIT_122), new SingleValueRange(__STR_LIT_123), new SingleValueRange(__STR_LIT_124), new SingleValueRange(__STR_LIT_125), new SingleValueRange(__STR_LIT_126), new SingleValueRange(__STR_LIT_127), new SingleValueRange(__STR_LIT_128), new SingleValueRange(__STR_LIT_129), new SingleValueRange(__STR_LIT_130), new SingleValueRange(__STR_LIT_131), new SingleValueRange(__STR_LIT_132), new SingleValueRange(__STR_LIT_133), new SingleValueRange(__STR_LIT_134), new SingleValueRange(__STR_LIT_135), new SingleValueRange(__STR_LIT_136), new SingleValueRange(__STR_LIT_137), new SingleValueRange(__STR_LIT_138), new SingleValueRange(__STR_LIT_139), new SingleValueRange(__STR_LIT_140), new SingleValueRange(__STR_LIT_141), new SingleValueRange(__STR_LIT_142), new SingleValueRange(__STR_LIT_143), new SingleValueRange(__STR_LIT_144), new SingleValueRange(__STR_LIT_145), new SingleValueRange(__STR_LIT_146), new SingleValueRange(__STR_LIT_147), new SingleValueRange(__STR_LIT_148), new SingleValueRange(__STR_LIT_149), new SingleValueRange(__STR_LIT_150), new SingleValueRange(__STR_LIT_151), new SingleValueRange(__STR_LIT_152), new SingleValueRange(__STR_LIT_153), new SingleValueRange(__STR_LIT_154), new SingleValueRange(__STR_LIT_155), new SingleValueRange(__STR_LIT_156), new SingleValueRange(__STR_LIT_157), new SingleValueRange(__STR_LIT_158), new SingleValueRange(__STR_LIT_159), new SingleValueRange(__STR_LIT_160), new SingleValueRange(__STR_LIT_161), new SingleValueRange(__STR_LIT_162)}), EF2.get(context)).asBoolean())
{ {
context.getLogger().trace("Fehler angeschrieben: SIG_65"); context.getLogger().trace("Fehler angeschrieben: SIG_65");
fehler_SIG_65(context, 0, null); fehler_SIG_65(context, 0, null);
@ -2718,167 +2718,169 @@ public class Plausi_ERHEBUNG_GASTHOERER_2019 extends BasePlausi
public static final StringValue __STR_LIT_7 = new StringValue("00"); public static final StringValue __STR_LIT_7 = new StringValue("00");
public static final StringValue __STR_LIT_8 = new StringValue(" "); public static final StringValue __STR_LIT_8 = new StringValue(" ");
public static final StringValue __STR_LIT_9 = new StringValue("99"); public static final StringValue __STR_LIT_9 = new StringValue("99");
public static final StringValue __STR_LIT_10 = new StringValue("4750"); public static final StringValue __STR_LIT_10 = new StringValue("4730");
public static final StringValue __STR_LIT_11 = new StringValue("4760"); public static final StringValue __STR_LIT_11 = new StringValue("4740");
public static final StringValue __STR_LIT_12 = new StringValue("4770"); public static final StringValue __STR_LIT_12 = new StringValue("4750");
public static final StringValue __STR_LIT_13 = new StringValue("4780"); public static final StringValue __STR_LIT_13 = new StringValue("4760");
public static final StringValue __STR_LIT_14 = new StringValue("4790"); public static final StringValue __STR_LIT_14 = new StringValue("4770");
public static final StringValue __STR_LIT_15 = new StringValue("4800"); public static final StringValue __STR_LIT_15 = new StringValue("4780");
public static final StringValue __STR_LIT_16 = new StringValue("4810"); public static final StringValue __STR_LIT_16 = new StringValue("4790");
public static final StringValue __STR_LIT_17 = new StringValue("4820"); public static final StringValue __STR_LIT_17 = new StringValue("4800");
public static final StringValue __STR_LIT_18 = new StringValue("4830"); public static final StringValue __STR_LIT_18 = new StringValue("4810");
public static final StringValue __STR_LIT_19 = new StringValue("4840"); public static final StringValue __STR_LIT_19 = new StringValue("4820");
public static final StringValue __STR_LIT_20 = new StringValue("4850"); public static final StringValue __STR_LIT_20 = new StringValue("4830");
public static final StringValue __STR_LIT_21 = new StringValue("4860"); public static final StringValue __STR_LIT_21 = new StringValue("4840");
public static final StringValue __STR_LIT_22 = new StringValue("4870"); public static final StringValue __STR_LIT_22 = new StringValue("4850");
public static final StringValue __STR_LIT_23 = new StringValue("4880"); public static final StringValue __STR_LIT_23 = new StringValue("4860");
public static final StringValue __STR_LIT_24 = new StringValue("4890"); public static final StringValue __STR_LIT_24 = new StringValue("4870");
public static final StringValue __STR_LIT_25 = new StringValue("4900"); public static final StringValue __STR_LIT_25 = new StringValue("4880");
public static final StringValue __STR_LIT_26 = new StringValue("4910"); public static final StringValue __STR_LIT_26 = new StringValue("4890");
public static final StringValue __STR_LIT_27 = new StringValue("4920"); public static final StringValue __STR_LIT_27 = new StringValue("4900");
public static final StringValue __STR_LIT_28 = new StringValue("4930"); public static final StringValue __STR_LIT_28 = new StringValue("4910");
public static final StringValue __STR_LIT_29 = new StringValue("409A"); public static final StringValue __STR_LIT_29 = new StringValue("4920");
public static final StringValue __STR_LIT_30 = new StringValue("409B"); public static final StringValue __STR_LIT_30 = new StringValue("4930");
public static final StringValue __STR_LIT_31 = new StringValue("409C"); public static final StringValue __STR_LIT_31 = new StringValue("409A");
public static final StringValue __STR_LIT_32 = new StringValue("409D"); public static final StringValue __STR_LIT_32 = new StringValue("409B");
public static final StringValue __STR_LIT_33 = new StringValue("409E"); public static final StringValue __STR_LIT_33 = new StringValue("409C");
public static final StringValue __STR_LIT_34 = new StringValue("409D");
public static final StringValue __STR_LIT_35 = new StringValue("409E");
public static final NumberValue __NUM_LIT_10 = new NumberValue(3980.0); public static final NumberValue __NUM_LIT_10 = new NumberValue(3980.0);
public static final NumberValue __NUM_LIT_11 = new NumberValue(3990.0); public static final NumberValue __NUM_LIT_11 = new NumberValue(3990.0);
public static final NumberValue __NUM_LIT_12 = new NumberValue(4000.0); public static final NumberValue __NUM_LIT_12 = new NumberValue(4000.0);
public static final NumberValue __NUM_LIT_13 = new NumberValue(4001.0); public static final NumberValue __NUM_LIT_13 = new NumberValue(4001.0);
public static final NumberValue __NUM_LIT_14 = new NumberValue(4002.0); public static final NumberValue __NUM_LIT_14 = new NumberValue(4002.0);
public static final NumberValue __NUM_LIT_15 = new NumberValue(4500.0); public static final NumberValue __NUM_LIT_15 = new NumberValue(4500.0);
public static final StringValue __STR_LIT_34 = new StringValue("2"); public static final StringValue __STR_LIT_36 = new StringValue("2");
public static final StringValue __STR_LIT_35 = new StringValue("3"); public static final StringValue __STR_LIT_37 = new StringValue("3");
public static final StringValue __STR_LIT_36 = new StringValue("4"); public static final StringValue __STR_LIT_38 = new StringValue("4");
public static final NumberValue __NUM_LIT_16 = new NumberValue(1912.0); public static final NumberValue __NUM_LIT_16 = new NumberValue(1912.0);
public static final NumberValue __NUM_LIT_17 = new NumberValue(1913.0); public static final NumberValue __NUM_LIT_17 = new NumberValue(1913.0);
public static final NumberValue __NUM_LIT_18 = new NumberValue(2020.0); public static final NumberValue __NUM_LIT_18 = new NumberValue(2020.0);
public static final StringValue __STR_LIT_37 = new StringValue("112"); public static final StringValue __STR_LIT_39 = new StringValue("112");
public static final StringValue __STR_LIT_38 = new StringValue("113"); public static final StringValue __STR_LIT_40 = new StringValue("113");
public static final StringValue __STR_LIT_39 = new StringValue("114"); public static final StringValue __STR_LIT_41 = new StringValue("114");
public static final StringValue __STR_LIT_40 = new StringValue("115"); public static final StringValue __STR_LIT_42 = new StringValue("115");
public static final StringValue __STR_LIT_41 = new StringValue("116"); public static final StringValue __STR_LIT_43 = new StringValue("116");
public static final StringValue __STR_LIT_42 = new StringValue("182"); public static final StringValue __STR_LIT_44 = new StringValue("182");
public static final StringValue __STR_LIT_43 = new StringValue("211"); public static final StringValue __STR_LIT_45 = new StringValue("211");
public static final StringValue __STR_LIT_44 = new StringValue("214"); public static final StringValue __STR_LIT_46 = new StringValue("214");
public static final StringValue __STR_LIT_45 = new StringValue("216"); public static final StringValue __STR_LIT_47 = new StringValue("216");
public static final StringValue __STR_LIT_46 = new StringValue("311"); public static final StringValue __STR_LIT_48 = new StringValue("311");
public static final StringValue __STR_LIT_47 = new StringValue("315"); public static final StringValue __STR_LIT_49 = new StringValue("315");
public static final StringValue __STR_LIT_48 = new StringValue("316"); public static final StringValue __STR_LIT_50 = new StringValue("316");
public static final StringValue __STR_LIT_49 = new StringValue("317"); public static final StringValue __STR_LIT_51 = new StringValue("317");
public static final StringValue __STR_LIT_50 = new StringValue("319"); public static final StringValue __STR_LIT_52 = new StringValue("319");
public static final StringValue __STR_LIT_51 = new StringValue("321"); public static final StringValue __STR_LIT_53 = new StringValue("321");
public static final StringValue __STR_LIT_52 = new StringValue("325"); public static final StringValue __STR_LIT_54 = new StringValue("325");
public static final StringValue __STR_LIT_53 = new StringValue("329"); public static final StringValue __STR_LIT_55 = new StringValue("329");
public static final StringValue __STR_LIT_54 = new StringValue("331"); public static final StringValue __STR_LIT_56 = new StringValue("331");
public static final StringValue __STR_LIT_55 = new StringValue("338"); public static final StringValue __STR_LIT_57 = new StringValue("338");
public static final StringValue __STR_LIT_56 = new StringValue("341"); public static final StringValue __STR_LIT_58 = new StringValue("341");
public static final StringValue __STR_LIT_57 = new StringValue("342"); public static final StringValue __STR_LIT_59 = new StringValue("342");
public static final StringValue __STR_LIT_58 = new StringValue("343"); public static final StringValue __STR_LIT_60 = new StringValue("343");
public static final StringValue __STR_LIT_59 = new StringValue("344"); public static final StringValue __STR_LIT_61 = new StringValue("344");
public static final StringValue __STR_LIT_60 = new StringValue("352"); public static final StringValue __STR_LIT_62 = new StringValue("352");
public static final StringValue __STR_LIT_61 = new StringValue("510"); public static final StringValue __STR_LIT_63 = new StringValue("510");
public static final StringValue __STR_LIT_62 = new StringValue("511"); public static final StringValue __STR_LIT_64 = new StringValue("511");
public static final StringValue __STR_LIT_63 = new StringValue("512"); public static final StringValue __STR_LIT_65 = new StringValue("512");
public static final StringValue __STR_LIT_64 = new StringValue("513"); public static final StringValue __STR_LIT_66 = new StringValue("513");
public static final StringValue __STR_LIT_65 = new StringValue("514"); public static final StringValue __STR_LIT_67 = new StringValue("514");
public static final StringValue __STR_LIT_66 = new StringValue("515"); public static final StringValue __STR_LIT_68 = new StringValue("515");
public static final StringValue __STR_LIT_67 = new StringValue("517"); public static final StringValue __STR_LIT_69 = new StringValue("517");
public static final StringValue __STR_LIT_68 = new StringValue("519"); public static final StringValue __STR_LIT_70 = new StringValue("519");
public static final StringValue __STR_LIT_69 = new StringValue("520"); public static final StringValue __STR_LIT_71 = new StringValue("520");
public static final StringValue __STR_LIT_70 = new StringValue("521"); public static final StringValue __STR_LIT_72 = new StringValue("521");
public static final StringValue __STR_LIT_71 = new StringValue("522"); public static final StringValue __STR_LIT_73 = new StringValue("522");
public static final StringValue __STR_LIT_72 = new StringValue("525"); public static final StringValue __STR_LIT_74 = new StringValue("525");
public static final StringValue __STR_LIT_73 = new StringValue("528"); public static final StringValue __STR_LIT_75 = new StringValue("528");
public static final StringValue __STR_LIT_74 = new StringValue("529"); public static final StringValue __STR_LIT_76 = new StringValue("529");
public static final StringValue __STR_LIT_75 = new StringValue("534"); public static final StringValue __STR_LIT_77 = new StringValue("534");
public static final StringValue __STR_LIT_76 = new StringValue("535"); public static final StringValue __STR_LIT_78 = new StringValue("535");
public static final StringValue __STR_LIT_77 = new StringValue("542"); public static final StringValue __STR_LIT_79 = new StringValue("542");
public static final StringValue __STR_LIT_78 = new StringValue("546"); public static final StringValue __STR_LIT_80 = new StringValue("546");
public static final StringValue __STR_LIT_79 = new StringValue("547"); public static final StringValue __STR_LIT_81 = new StringValue("547");
public static final StringValue __STR_LIT_80 = new StringValue("548"); public static final StringValue __STR_LIT_82 = new StringValue("548");
public static final StringValue __STR_LIT_81 = new StringValue("549"); public static final StringValue __STR_LIT_83 = new StringValue("549");
public static final NumberValue __NUM_LIT_19 = new NumberValue(10.0); public static final NumberValue __NUM_LIT_19 = new NumberValue(10.0);
public static final StringValue __STR_LIT_82 = new StringValue("0081"); public static final StringValue __STR_LIT_84 = new StringValue("0081");
public static final StringValue __STR_LIT_83 = new StringValue("0089"); public static final StringValue __STR_LIT_85 = new StringValue("0089");
public static final StringValue __STR_LIT_84 = new StringValue("0261"); public static final StringValue __STR_LIT_86 = new StringValue("0261");
public static final StringValue __STR_LIT_85 = new StringValue("0269"); public static final StringValue __STR_LIT_87 = new StringValue("0269");
public static final StringValue __STR_LIT_86 = new StringValue("0271"); public static final StringValue __STR_LIT_88 = new StringValue("0271");
public static final StringValue __STR_LIT_87 = new StringValue("0279"); public static final StringValue __STR_LIT_89 = new StringValue("0279");
public static final StringValue __STR_LIT_88 = new StringValue("0309"); public static final StringValue __STR_LIT_90 = new StringValue("0309");
public static final StringValue __STR_LIT_89 = new StringValue("0311"); public static final StringValue __STR_LIT_91 = new StringValue("0311");
public static final StringValue __STR_LIT_90 = new StringValue("0319"); public static final StringValue __STR_LIT_92 = new StringValue("0319");
public static final StringValue __STR_LIT_91 = new StringValue("0361"); public static final StringValue __STR_LIT_93 = new StringValue("0361");
public static final StringValue __STR_LIT_92 = new StringValue("0369"); public static final StringValue __STR_LIT_94 = new StringValue("0369");
public static final StringValue __STR_LIT_93 = new StringValue("0371"); public static final StringValue __STR_LIT_95 = new StringValue("0371");
public static final StringValue __STR_LIT_94 = new StringValue("0379"); public static final StringValue __STR_LIT_96 = new StringValue("0379");
public static final StringValue __STR_LIT_95 = new StringValue("0491"); public static final StringValue __STR_LIT_97 = new StringValue("0491");
public static final StringValue __STR_LIT_96 = new StringValue("0499"); public static final StringValue __STR_LIT_98 = new StringValue("0499");
public static final StringValue __STR_LIT_97 = new StringValue("0640"); public static final StringValue __STR_LIT_99 = new StringValue("0640");
public static final StringValue __STR_LIT_98 = new StringValue("0650"); public static final StringValue __STR_LIT_100 = new StringValue("0650");
public static final StringValue __STR_LIT_99 = new StringValue("0950"); public static final StringValue __STR_LIT_101 = new StringValue("0950");
public static final StringValue __STR_LIT_100 = new StringValue("1001"); public static final StringValue __STR_LIT_102 = new StringValue("1001");
public static final StringValue __STR_LIT_101 = new StringValue("1011"); public static final StringValue __STR_LIT_103 = new StringValue("1011");
public static final StringValue __STR_LIT_102 = new StringValue("1021"); public static final StringValue __STR_LIT_104 = new StringValue("1021");
public static final StringValue __STR_LIT_103 = new StringValue("1029"); public static final StringValue __STR_LIT_105 = new StringValue("1029");
public static final StringValue __STR_LIT_104 = new StringValue("1031"); public static final StringValue __STR_LIT_106 = new StringValue("1031");
public static final StringValue __STR_LIT_105 = new StringValue("1039"); public static final StringValue __STR_LIT_107 = new StringValue("1039");
public static final StringValue __STR_LIT_106 = new StringValue("1081"); public static final StringValue __STR_LIT_108 = new StringValue("1081");
public static final StringValue __STR_LIT_107 = new StringValue("1089"); public static final StringValue __STR_LIT_109 = new StringValue("1089");
public static final StringValue __STR_LIT_108 = new StringValue("1091"); public static final StringValue __STR_LIT_110 = new StringValue("1091");
public static final StringValue __STR_LIT_109 = new StringValue("1099"); public static final StringValue __STR_LIT_111 = new StringValue("1099");
public static final StringValue __STR_LIT_110 = new StringValue("1101"); public static final StringValue __STR_LIT_112 = new StringValue("1101");
public static final StringValue __STR_LIT_111 = new StringValue("1109"); public static final StringValue __STR_LIT_113 = new StringValue("1109");
public static final StringValue __STR_LIT_112 = new StringValue("1111"); public static final StringValue __STR_LIT_114 = new StringValue("1111");
public static final StringValue __STR_LIT_113 = new StringValue("1119"); public static final StringValue __STR_LIT_115 = new StringValue("1119");
public static final StringValue __STR_LIT_114 = new StringValue("1121"); public static final StringValue __STR_LIT_116 = new StringValue("1121");
public static final StringValue __STR_LIT_115 = new StringValue("1129"); public static final StringValue __STR_LIT_117 = new StringValue("1129");
public static final StringValue __STR_LIT_116 = new StringValue("1161"); public static final StringValue __STR_LIT_118 = new StringValue("1161");
public static final StringValue __STR_LIT_117 = new StringValue("1169"); public static final StringValue __STR_LIT_119 = new StringValue("1169");
public static final StringValue __STR_LIT_118 = new StringValue("1241"); public static final StringValue __STR_LIT_120 = new StringValue("1241");
public static final StringValue __STR_LIT_119 = new StringValue("1249"); public static final StringValue __STR_LIT_121 = new StringValue("1249");
public static final StringValue __STR_LIT_120 = new StringValue("1251"); public static final StringValue __STR_LIT_122 = new StringValue("1251");
public static final StringValue __STR_LIT_121 = new StringValue("1258"); public static final StringValue __STR_LIT_123 = new StringValue("1258");
public static final StringValue __STR_LIT_122 = new StringValue("1259"); public static final StringValue __STR_LIT_124 = new StringValue("1259");
public static final StringValue __STR_LIT_123 = new StringValue("1271"); public static final StringValue __STR_LIT_125 = new StringValue("1271");
public static final StringValue __STR_LIT_124 = new StringValue("1279"); public static final StringValue __STR_LIT_126 = new StringValue("1279");
public static final StringValue __STR_LIT_125 = new StringValue("1293"); public static final StringValue __STR_LIT_127 = new StringValue("1293");
public static final StringValue __STR_LIT_126 = new StringValue("1319"); public static final StringValue __STR_LIT_128 = new StringValue("1319");
public static final StringValue __STR_LIT_127 = new StringValue("1321"); public static final StringValue __STR_LIT_129 = new StringValue("1321");
public static final StringValue __STR_LIT_128 = new StringValue("1329"); public static final StringValue __STR_LIT_130 = new StringValue("1329");
public static final StringValue __STR_LIT_129 = new StringValue("1331"); public static final StringValue __STR_LIT_131 = new StringValue("1331");
public static final StringValue __STR_LIT_130 = new StringValue("1339"); public static final StringValue __STR_LIT_132 = new StringValue("1339");
public static final StringValue __STR_LIT_131 = new StringValue("1341"); public static final StringValue __STR_LIT_133 = new StringValue("1341");
public static final StringValue __STR_LIT_132 = new StringValue("1349"); public static final StringValue __STR_LIT_134 = new StringValue("1349");
public static final StringValue __STR_LIT_133 = new StringValue("1361"); public static final StringValue __STR_LIT_135 = new StringValue("1361");
public static final StringValue __STR_LIT_134 = new StringValue("1362"); public static final StringValue __STR_LIT_136 = new StringValue("1362");
public static final StringValue __STR_LIT_135 = new StringValue("1369"); public static final StringValue __STR_LIT_137 = new StringValue("1369");
public static final StringValue __STR_LIT_136 = new StringValue("1378"); public static final StringValue __STR_LIT_138 = new StringValue("1378");
public static final StringValue __STR_LIT_137 = new StringValue("1379"); public static final StringValue __STR_LIT_139 = new StringValue("1379");
public static final StringValue __STR_LIT_138 = new StringValue("1390"); public static final StringValue __STR_LIT_140 = new StringValue("1390");
public static final StringValue __STR_LIT_139 = new StringValue("1481"); public static final StringValue __STR_LIT_141 = new StringValue("1481");
public static final StringValue __STR_LIT_140 = new StringValue("1489"); public static final StringValue __STR_LIT_142 = new StringValue("1489");
public static final StringValue __STR_LIT_141 = new StringValue("1491"); public static final StringValue __STR_LIT_143 = new StringValue("1491");
public static final StringValue __STR_LIT_142 = new StringValue("1499"); public static final StringValue __STR_LIT_144 = new StringValue("1499");
public static final StringValue __STR_LIT_143 = new StringValue("1639"); public static final StringValue __STR_LIT_145 = new StringValue("1639");
public static final StringValue __STR_LIT_144 = new StringValue("1731"); public static final StringValue __STR_LIT_146 = new StringValue("1731");
public static final StringValue __STR_LIT_145 = new StringValue("1739"); public static final StringValue __STR_LIT_147 = new StringValue("1739");
public static final StringValue __STR_LIT_146 = new StringValue("1821"); public static final StringValue __STR_LIT_148 = new StringValue("1821");
public static final StringValue __STR_LIT_147 = new StringValue("1829"); public static final StringValue __STR_LIT_149 = new StringValue("1829");
public static final StringValue __STR_LIT_148 = new StringValue("5021"); public static final StringValue __STR_LIT_150 = new StringValue("5021");
public static final StringValue __STR_LIT_149 = new StringValue("5022"); public static final StringValue __STR_LIT_151 = new StringValue("5022");
public static final StringValue __STR_LIT_150 = new StringValue("5024"); public static final StringValue __STR_LIT_152 = new StringValue("5024");
public static final StringValue __STR_LIT_151 = new StringValue("5025"); public static final StringValue __STR_LIT_153 = new StringValue("5025");
public static final StringValue __STR_LIT_152 = new StringValue("5026"); public static final StringValue __STR_LIT_154 = new StringValue("5026");
public static final StringValue __STR_LIT_153 = new StringValue("5027"); public static final StringValue __STR_LIT_155 = new StringValue("5027");
public static final StringValue __STR_LIT_154 = new StringValue("5028"); public static final StringValue __STR_LIT_156 = new StringValue("5028");
public static final StringValue __STR_LIT_155 = new StringValue("5150"); public static final StringValue __STR_LIT_157 = new StringValue("5150");
public static final StringValue __STR_LIT_156 = new StringValue("5160"); public static final StringValue __STR_LIT_158 = new StringValue("5160");
public static final StringValue __STR_LIT_157 = new StringValue("6245"); public static final StringValue __STR_LIT_159 = new StringValue("6245");
public static final StringValue __STR_LIT_158 = new StringValue("7467"); public static final StringValue __STR_LIT_160 = new StringValue("7467");
public static final StringValue __STR_LIT_159 = new StringValue("6380"); public static final StringValue __STR_LIT_161 = new StringValue("6380");
public static final StringValue __STR_LIT_160 = new StringValue("8100"); public static final StringValue __STR_LIT_162 = new StringValue("8100");
public TB_T_Gasthoerer themenbereich; public TB_T_Gasthoerer themenbereich;
public MaterialTB_FachrichtungenGast __material_FachrichtungenGast_Materialbeschreibung; public MaterialTB_FachrichtungenGast __material_FachrichtungenGast_Materialbeschreibung;
@ -3169,7 +3171,7 @@ public class Plausi_ERHEBUNG_GASTHOERER_2019 extends BasePlausi
PlausiFehler fehler = new PlausiFehler(); PlausiFehler fehler = new PlausiFehler();
fehler.setFehlerSchluessel("SIG_10"); fehler.setFehlerSchluessel("SIG_10");
fehler.setFehlertextKurz("Falsche Signatur beim Geschlecht"); fehler.setFehlertextKurz("Falsche Signatur beim Geschlecht");
fehler.setFehlertextLang("Geschlecht (EF5) ungleich 1, 2, 3 oder 4, Stand der PL Klassen vom 27.11.2024"); fehler.setFehlertextLang("Geschlecht (EF5) ungleich 1, 2, 3 oder 4, Stand der PL Klassen vom 26.02.2026");
fehler.setFehlerGewicht(1); fehler.setFehlerGewicht(1);
fehler.setReferenzTB("T_Gasthoerer"); fehler.setReferenzTB("T_Gasthoerer");
fehler.setFehlerArt(1); fehler.setFehlerArt(1);

1666
src/de/statspez/plausi/generated/Plausi_ERHEBUNG_GASTHOERER_2019.xml

File diff suppressed because it is too large Load Diff

BIN
src/de/statspez/plausi/generated/Plausi_ERHEBUNG_GASTHOERER_2019_Descriptor.data

Binary file not shown.

496
src/de/statspez/plausi/generated/Plausi_ERHEBUNG_PROMOVIERENDE_AB_2017.java

File diff suppressed because one or more lines are too long

4239
src/de/statspez/plausi/generated/Plausi_ERHEBUNG_PROMOVIERENDE_AB_2017.xml

File diff suppressed because it is too large Load Diff

BIN
src/de/statspez/plausi/generated/Plausi_ERHEBUNG_PROMOVIERENDE_AB_2017_Descriptor.data

Binary file not shown.

728
src/de/statspez/plausi/generated/Plausi_ERHEBUNG_PROMOVIERENDE_AB_2017_Segment1.java

@ -4,177 +4,177 @@ import de.statspez.pleditor.generator.runtime.*;
public class Plausi_ERHEBUNG_PROMOVIERENDE_AB_2017_Segment1 public class Plausi_ERHEBUNG_PROMOVIERENDE_AB_2017_Segment1
{ {
public static final StringValue __STR_LIT_986 = new StringValue("2700"); public static final StringValue __STR_LIT_986 = new StringValue(" c");
public static final StringValue __STR_LIT_987 = new StringValue("2950"); public static final StringValue __STR_LIT_987 = new StringValue("2024");
public static final StringValue __STR_LIT_988 = new StringValue("3780"); public static final StringValue __STR_LIT_988 = new StringValue("2025");
public static final StringValue __STR_LIT_989 = new StringValue(" b "); public static final StringValue __STR_LIT_989 = new StringValue("2021");
public static final StringValue __STR_LIT_990 = new StringValue(" c"); public static final StringValue __STR_LIT_990 = new StringValue("1");
public static final StringValue __STR_LIT_991 = new StringValue(" bc"); public static final StringValue __STR_LIT_991 = new StringValue("b ");
public static final StringValue __STR_LIT_992 = new StringValue("a "); public static final StringValue __STR_LIT_992 = new StringValue("102");
public static final StringValue __STR_LIT_993 = new StringValue("ab "); public static final StringValue __STR_LIT_993 = new StringValue("004");
public static final StringValue __STR_LIT_994 = new StringValue("1"); public static final StringValue __STR_LIT_994 = new StringValue("8");
public static final StringValue __STR_LIT_995 = new StringValue("a c"); public static final StringValue __STR_LIT_995 = new StringValue("98");
public static final StringValue __STR_LIT_996 = new StringValue("abc"); public static final StringValue __STR_LIT_996 = new StringValue("999");
public static final StringValue __STR_LIT_997 = new StringValue("a "); public static final StringValue __STR_LIT_997 = new StringValue("0081");
public static final StringValue __STR_LIT_998 = new StringValue(" c"); public static final StringValue __STR_LIT_998 = new StringValue("0089");
public static final StringValue __STR_LIT_999 = new StringValue("2022"); public static final StringValue __STR_LIT_999 = new StringValue("0261");
public static final StringValue __STR_LIT_1000 = new StringValue("2023"); public static final StringValue __STR_LIT_1000 = new StringValue("0269");
public static final StringValue __STR_LIT_1001 = new StringValue("2019"); public static final StringValue __STR_LIT_1001 = new StringValue("0271");
public static final StringValue __STR_LIT_1002 = new StringValue("102"); public static final StringValue __STR_LIT_1002 = new StringValue("0279");
public static final StringValue __STR_LIT_1003 = new StringValue("004"); public static final StringValue __STR_LIT_1003 = new StringValue("0309");
public static final StringValue __STR_LIT_1004 = new StringValue("8"); public static final StringValue __STR_LIT_1004 = new StringValue("0311");
public static final StringValue __STR_LIT_1005 = new StringValue("98"); public static final StringValue __STR_LIT_1005 = new StringValue("0319");
public static final StringValue __STR_LIT_1006 = new StringValue("999"); public static final StringValue __STR_LIT_1006 = new StringValue("0361");
public static final StringValue __STR_LIT_1007 = new StringValue("0081"); public static final StringValue __STR_LIT_1007 = new StringValue("0369");
public static final StringValue __STR_LIT_1008 = new StringValue("0089"); public static final StringValue __STR_LIT_1008 = new StringValue("0371");
public static final StringValue __STR_LIT_1009 = new StringValue("0261"); public static final StringValue __STR_LIT_1009 = new StringValue("0379");
public static final StringValue __STR_LIT_1010 = new StringValue("0269"); public static final StringValue __STR_LIT_1010 = new StringValue("0491");
public static final StringValue __STR_LIT_1011 = new StringValue("0271"); public static final StringValue __STR_LIT_1011 = new StringValue("0499");
public static final StringValue __STR_LIT_1012 = new StringValue("0279"); public static final StringValue __STR_LIT_1012 = new StringValue("0640");
public static final StringValue __STR_LIT_1013 = new StringValue("0309"); public static final StringValue __STR_LIT_1013 = new StringValue("0650");
public static final StringValue __STR_LIT_1014 = new StringValue("0311"); public static final StringValue __STR_LIT_1014 = new StringValue("0950");
public static final StringValue __STR_LIT_1015 = new StringValue("0319"); public static final StringValue __STR_LIT_1015 = new StringValue("1001");
public static final StringValue __STR_LIT_1016 = new StringValue("0361"); public static final StringValue __STR_LIT_1016 = new StringValue("1011");
public static final StringValue __STR_LIT_1017 = new StringValue("0369"); public static final StringValue __STR_LIT_1017 = new StringValue("1021");
public static final StringValue __STR_LIT_1018 = new StringValue("0371"); public static final StringValue __STR_LIT_1018 = new StringValue("1029");
public static final StringValue __STR_LIT_1019 = new StringValue("0379"); public static final StringValue __STR_LIT_1019 = new StringValue("1031");
public static final StringValue __STR_LIT_1020 = new StringValue("0491"); public static final StringValue __STR_LIT_1020 = new StringValue("1039");
public static final StringValue __STR_LIT_1021 = new StringValue("0499"); public static final StringValue __STR_LIT_1021 = new StringValue("1081");
public static final StringValue __STR_LIT_1022 = new StringValue("0640"); public static final StringValue __STR_LIT_1022 = new StringValue("1089");
public static final StringValue __STR_LIT_1023 = new StringValue("0650"); public static final StringValue __STR_LIT_1023 = new StringValue("1091");
public static final StringValue __STR_LIT_1024 = new StringValue("0950"); public static final StringValue __STR_LIT_1024 = new StringValue("1099");
public static final StringValue __STR_LIT_1025 = new StringValue("1021"); public static final StringValue __STR_LIT_1025 = new StringValue("1101");
public static final StringValue __STR_LIT_1026 = new StringValue("1029"); public static final StringValue __STR_LIT_1026 = new StringValue("1109");
public static final StringValue __STR_LIT_1027 = new StringValue("1031"); public static final StringValue __STR_LIT_1027 = new StringValue("1111");
public static final StringValue __STR_LIT_1028 = new StringValue("1039"); public static final StringValue __STR_LIT_1028 = new StringValue("1119");
public static final StringValue __STR_LIT_1029 = new StringValue("1081"); public static final StringValue __STR_LIT_1029 = new StringValue("1121");
public static final StringValue __STR_LIT_1030 = new StringValue("1089"); public static final StringValue __STR_LIT_1030 = new StringValue("1129");
public static final StringValue __STR_LIT_1031 = new StringValue("1091"); public static final StringValue __STR_LIT_1031 = new StringValue("1161");
public static final StringValue __STR_LIT_1032 = new StringValue("1099"); public static final StringValue __STR_LIT_1032 = new StringValue("1169");
public static final StringValue __STR_LIT_1033 = new StringValue("1101"); public static final StringValue __STR_LIT_1033 = new StringValue("1241");
public static final StringValue __STR_LIT_1034 = new StringValue("1109"); public static final StringValue __STR_LIT_1034 = new StringValue("1249");
public static final StringValue __STR_LIT_1035 = new StringValue("1111"); public static final StringValue __STR_LIT_1035 = new StringValue("1251");
public static final StringValue __STR_LIT_1036 = new StringValue("1119"); public static final StringValue __STR_LIT_1036 = new StringValue("1258");
public static final StringValue __STR_LIT_1037 = new StringValue("1121"); public static final StringValue __STR_LIT_1037 = new StringValue("1259");
public static final StringValue __STR_LIT_1038 = new StringValue("1129"); public static final StringValue __STR_LIT_1038 = new StringValue("1271");
public static final StringValue __STR_LIT_1039 = new StringValue("1161"); public static final StringValue __STR_LIT_1039 = new StringValue("1279");
public static final StringValue __STR_LIT_1040 = new StringValue("1169"); public static final StringValue __STR_LIT_1040 = new StringValue("1319");
public static final StringValue __STR_LIT_1041 = new StringValue("1241"); public static final StringValue __STR_LIT_1041 = new StringValue("1321");
public static final StringValue __STR_LIT_1042 = new StringValue("1249"); public static final StringValue __STR_LIT_1042 = new StringValue("1329");
public static final StringValue __STR_LIT_1043 = new StringValue("1251"); public static final StringValue __STR_LIT_1043 = new StringValue("1331");
public static final StringValue __STR_LIT_1044 = new StringValue("1258"); public static final StringValue __STR_LIT_1044 = new StringValue("1339");
public static final StringValue __STR_LIT_1045 = new StringValue("1259"); public static final StringValue __STR_LIT_1045 = new StringValue("1341");
public static final StringValue __STR_LIT_1046 = new StringValue("1271"); public static final StringValue __STR_LIT_1046 = new StringValue("1349");
public static final StringValue __STR_LIT_1047 = new StringValue("1279"); public static final StringValue __STR_LIT_1047 = new StringValue("1361");
public static final StringValue __STR_LIT_1048 = new StringValue("1319"); public static final StringValue __STR_LIT_1048 = new StringValue("1362");
public static final StringValue __STR_LIT_1049 = new StringValue("1321"); public static final StringValue __STR_LIT_1049 = new StringValue("1369");
public static final StringValue __STR_LIT_1050 = new StringValue("1329"); public static final StringValue __STR_LIT_1050 = new StringValue("1378");
public static final StringValue __STR_LIT_1051 = new StringValue("1331"); public static final StringValue __STR_LIT_1051 = new StringValue("1379");
public static final StringValue __STR_LIT_1052 = new StringValue("1339"); public static final StringValue __STR_LIT_1052 = new StringValue("1481");
public static final StringValue __STR_LIT_1053 = new StringValue("1341"); public static final StringValue __STR_LIT_1053 = new StringValue("1489");
public static final StringValue __STR_LIT_1054 = new StringValue("1349"); public static final StringValue __STR_LIT_1054 = new StringValue("1491");
public static final StringValue __STR_LIT_1055 = new StringValue("1361"); public static final StringValue __STR_LIT_1055 = new StringValue("1499");
public static final StringValue __STR_LIT_1056 = new StringValue("1362"); public static final StringValue __STR_LIT_1056 = new StringValue("1639");
public static final StringValue __STR_LIT_1057 = new StringValue("1369"); public static final StringValue __STR_LIT_1057 = new StringValue("1731");
public static final StringValue __STR_LIT_1058 = new StringValue("1378"); public static final StringValue __STR_LIT_1058 = new StringValue("1739");
public static final StringValue __STR_LIT_1059 = new StringValue("1379"); public static final StringValue __STR_LIT_1059 = new StringValue("1821");
public static final StringValue __STR_LIT_1060 = new StringValue("1481"); public static final StringValue __STR_LIT_1060 = new StringValue("1829");
public static final StringValue __STR_LIT_1061 = new StringValue("1489"); public static final StringValue __STR_LIT_1061 = new StringValue("5150");
public static final StringValue __STR_LIT_1062 = new StringValue("1491"); public static final StringValue __STR_LIT_1062 = new StringValue("5160");
public static final StringValue __STR_LIT_1063 = new StringValue("1499"); public static final StringValue __STR_LIT_1063 = new StringValue("6245");
public static final StringValue __STR_LIT_1064 = new StringValue("1639"); public static final StringValue __STR_LIT_1064 = new StringValue("7467");
public static final StringValue __STR_LIT_1065 = new StringValue("1731"); public static final StringValue __STR_LIT_1065 = new StringValue("8100");
public static final StringValue __STR_LIT_1066 = new StringValue("1739"); public static final StringValue __STR_LIT_1066 = new StringValue("0011");
public static final StringValue __STR_LIT_1067 = new StringValue("1821"); public static final StringValue __STR_LIT_1067 = new StringValue("0012");
public static final StringValue __STR_LIT_1068 = new StringValue("1829"); public static final StringValue __STR_LIT_1068 = new StringValue("0150");
public static final StringValue __STR_LIT_1069 = new StringValue("5150"); public static final StringValue __STR_LIT_1069 = new StringValue("0180");
public static final StringValue __STR_LIT_1070 = new StringValue("5160"); public static final StringValue __STR_LIT_1070 = new StringValue("0190");
public static final StringValue __STR_LIT_1071 = new StringValue("6245"); public static final StringValue __STR_LIT_1071 = new StringValue("0372");
public static final StringValue __STR_LIT_1072 = new StringValue("7467"); public static final StringValue __STR_LIT_1072 = new StringValue("0373");
public static final StringValue __STR_LIT_1073 = new StringValue("8100"); public static final StringValue __STR_LIT_1073 = new StringValue("0390");
public static final StringValue __STR_LIT_1074 = new StringValue("0011"); public static final StringValue __STR_LIT_1074 = new StringValue("0511");
public static final StringValue __STR_LIT_1075 = new StringValue("0012"); public static final StringValue __STR_LIT_1075 = new StringValue("0552");
public static final StringValue __STR_LIT_1076 = new StringValue("0150"); public static final StringValue __STR_LIT_1076 = new StringValue("0580");
public static final StringValue __STR_LIT_1077 = new StringValue("0180"); public static final StringValue __STR_LIT_1077 = new StringValue("0590");
public static final StringValue __STR_LIT_1078 = new StringValue("0190"); public static final StringValue __STR_LIT_1078 = new StringValue("0630");
public static final StringValue __STR_LIT_1079 = new StringValue("0372"); public static final StringValue __STR_LIT_1079 = new StringValue("0670");
public static final StringValue __STR_LIT_1080 = new StringValue("0373"); public static final StringValue __STR_LIT_1080 = new StringValue("0680");
public static final StringValue __STR_LIT_1081 = new StringValue("0511"); public static final StringValue __STR_LIT_1081 = new StringValue("0690");
public static final StringValue __STR_LIT_1082 = new StringValue("0552"); public static final StringValue __STR_LIT_1082 = new StringValue("0910");
public static final StringValue __STR_LIT_1083 = new StringValue("0580"); public static final StringValue __STR_LIT_1083 = new StringValue("1010");
public static final StringValue __STR_LIT_1084 = new StringValue("0590"); public static final StringValue __STR_LIT_1084 = new StringValue("1060");
public static final StringValue __STR_LIT_1085 = new StringValue("0630"); public static final StringValue __STR_LIT_1085 = new StringValue("1150");
public static final StringValue __STR_LIT_1086 = new StringValue("0670"); public static final StringValue __STR_LIT_1086 = new StringValue("1160");
public static final StringValue __STR_LIT_1087 = new StringValue("0680"); public static final StringValue __STR_LIT_1087 = new StringValue("1170");
public static final StringValue __STR_LIT_1088 = new StringValue("0690"); public static final StringValue __STR_LIT_1088 = new StringValue("1180");
public static final StringValue __STR_LIT_1089 = new StringValue("0910"); public static final StringValue __STR_LIT_1089 = new StringValue("1190");
public static final StringValue __STR_LIT_1090 = new StringValue("1010"); public static final StringValue __STR_LIT_1090 = new StringValue("1200");
public static final StringValue __STR_LIT_1091 = new StringValue("1040"); public static final StringValue __STR_LIT_1091 = new StringValue("1210");
public static final StringValue __STR_LIT_1092 = new StringValue("1060"); public static final StringValue __STR_LIT_1092 = new StringValue("1211");
public static final StringValue __STR_LIT_1093 = new StringValue("1150"); public static final StringValue __STR_LIT_1093 = new StringValue("1222");
public static final StringValue __STR_LIT_1094 = new StringValue("1160"); public static final StringValue __STR_LIT_1094 = new StringValue("1230");
public static final StringValue __STR_LIT_1095 = new StringValue("1170"); public static final StringValue __STR_LIT_1095 = new StringValue("1250");
public static final StringValue __STR_LIT_1096 = new StringValue("1180"); public static final StringValue __STR_LIT_1096 = new StringValue("1252");
public static final StringValue __STR_LIT_1097 = new StringValue("1190"); public static final StringValue __STR_LIT_1097 = new StringValue("1260");
public static final StringValue __STR_LIT_1098 = new StringValue("1200"); public static final StringValue __STR_LIT_1098 = new StringValue("1323");
public static final StringValue __STR_LIT_1099 = new StringValue("1210"); public static final StringValue __STR_LIT_1099 = new StringValue("1440");
public static final StringValue __STR_LIT_1100 = new StringValue("1230"); public static final StringValue __STR_LIT_1100 = new StringValue("1460");
public static final StringValue __STR_LIT_1101 = new StringValue("1260"); public static final StringValue __STR_LIT_1101 = new StringValue("1530");
public static final StringValue __STR_LIT_1102 = new StringValue("1323"); public static final StringValue __STR_LIT_1102 = new StringValue("1542");
public static final StringValue __STR_LIT_1103 = new StringValue("1440"); public static final StringValue __STR_LIT_1103 = new StringValue("1632");
public static final StringValue __STR_LIT_1104 = new StringValue("1460"); public static final StringValue __STR_LIT_1104 = new StringValue("1633");
public static final StringValue __STR_LIT_1105 = new StringValue("1530"); public static final StringValue __STR_LIT_1105 = new StringValue("1634");
public static final StringValue __STR_LIT_1106 = new StringValue("1542"); public static final StringValue __STR_LIT_1106 = new StringValue("1690");
public static final StringValue __STR_LIT_1107 = new StringValue("1632"); public static final StringValue __STR_LIT_1107 = new StringValue("1700");
public static final StringValue __STR_LIT_1108 = new StringValue("1633"); public static final StringValue __STR_LIT_1108 = new StringValue("1730");
public static final StringValue __STR_LIT_1109 = new StringValue("1634"); public static final StringValue __STR_LIT_1109 = new StringValue("1740");
public static final StringValue __STR_LIT_1110 = new StringValue("1690"); public static final StringValue __STR_LIT_1110 = new StringValue("1800");
public static final StringValue __STR_LIT_1111 = new StringValue("1700"); public static final StringValue __STR_LIT_1111 = new StringValue("1960");
public static final StringValue __STR_LIT_1112 = new StringValue("1730"); public static final StringValue __STR_LIT_1112 = new StringValue("2000");
public static final StringValue __STR_LIT_1113 = new StringValue("1740"); public static final StringValue __STR_LIT_1113 = new StringValue("2020");
public static final StringValue __STR_LIT_1114 = new StringValue("1800"); public static final StringValue __STR_LIT_1114 = new StringValue("2030");
public static final StringValue __STR_LIT_1115 = new StringValue("1960"); public static final StringValue __STR_LIT_1115 = new StringValue("2040");
public static final StringValue __STR_LIT_1116 = new StringValue("2000"); public static final StringValue __STR_LIT_1116 = new StringValue("2050");
public static final StringValue __STR_LIT_1117 = new StringValue("2020"); public static final StringValue __STR_LIT_1117 = new StringValue("2060");
public static final StringValue __STR_LIT_1118 = new StringValue("2030"); public static final StringValue __STR_LIT_1118 = new StringValue("2170");
public static final StringValue __STR_LIT_1119 = new StringValue("2040"); public static final StringValue __STR_LIT_1119 = new StringValue("2200");
public static final StringValue __STR_LIT_1120 = new StringValue("2050"); public static final StringValue __STR_LIT_1120 = new StringValue("2300");
public static final StringValue __STR_LIT_1121 = new StringValue("2060"); public static final StringValue __STR_LIT_1121 = new StringValue("2420");
public static final StringValue __STR_LIT_1122 = new StringValue("2170"); public static final StringValue __STR_LIT_1122 = new StringValue("2430");
public static final StringValue __STR_LIT_1123 = new StringValue("2200"); public static final StringValue __STR_LIT_1123 = new StringValue("2500");
public static final StringValue __STR_LIT_1124 = new StringValue("2420"); public static final StringValue __STR_LIT_1124 = new StringValue("2530");
public static final StringValue __STR_LIT_1125 = new StringValue("2430"); public static final StringValue __STR_LIT_1125 = new StringValue("2550");
public static final StringValue __STR_LIT_1126 = new StringValue("2500"); public static final StringValue __STR_LIT_1126 = new StringValue("2561");
public static final StringValue __STR_LIT_1127 = new StringValue("2550"); public static final StringValue __STR_LIT_1127 = new StringValue("2571");
public static final StringValue __STR_LIT_1128 = new StringValue("2561"); public static final StringValue __STR_LIT_1128 = new StringValue("2572");
public static final StringValue __STR_LIT_1129 = new StringValue("2571"); public static final StringValue __STR_LIT_1129 = new StringValue("2573");
public static final StringValue __STR_LIT_1130 = new StringValue("2572"); public static final StringValue __STR_LIT_1130 = new StringValue("2581");
public static final StringValue __STR_LIT_1131 = new StringValue("2573"); public static final StringValue __STR_LIT_1131 = new StringValue("2582");
public static final StringValue __STR_LIT_1132 = new StringValue("2581"); public static final StringValue __STR_LIT_1132 = new StringValue("2583");
public static final StringValue __STR_LIT_1133 = new StringValue("2582"); public static final StringValue __STR_LIT_1133 = new StringValue("2600");
public static final StringValue __STR_LIT_1134 = new StringValue("2583"); public static final StringValue __STR_LIT_1134 = new StringValue("2620");
public static final StringValue __STR_LIT_1135 = new StringValue("2600"); public static final StringValue __STR_LIT_1135 = new StringValue("2630");
public static final StringValue __STR_LIT_1136 = new StringValue("2620"); public static final StringValue __STR_LIT_1136 = new StringValue("2640");
public static final StringValue __STR_LIT_1137 = new StringValue("2630"); public static final StringValue __STR_LIT_1137 = new StringValue("2650");
public static final StringValue __STR_LIT_1138 = new StringValue("2640"); public static final StringValue __STR_LIT_1138 = new StringValue("2670");
public static final StringValue __STR_LIT_1139 = new StringValue("2650"); public static final StringValue __STR_LIT_1139 = new StringValue("2690");
public static final StringValue __STR_LIT_1140 = new StringValue("2670"); public static final StringValue __STR_LIT_1140 = new StringValue("2700");
public static final StringValue __STR_LIT_1141 = new StringValue("2690"); public static final StringValue __STR_LIT_1141 = new StringValue("2710");
public static final StringValue __STR_LIT_1142 = new StringValue("2710"); public static final StringValue __STR_LIT_1142 = new StringValue("2720");
public static final StringValue __STR_LIT_1143 = new StringValue("2720"); public static final StringValue __STR_LIT_1143 = new StringValue("2730");
public static final StringValue __STR_LIT_1144 = new StringValue("2730"); public static final StringValue __STR_LIT_1144 = new StringValue("2760");
public static final StringValue __STR_LIT_1145 = new StringValue("2760"); public static final StringValue __STR_LIT_1145 = new StringValue("2770");
public static final StringValue __STR_LIT_1146 = new StringValue("2770"); public static final StringValue __STR_LIT_1146 = new StringValue("2800");
public static final StringValue __STR_LIT_1147 = new StringValue("2800"); public static final StringValue __STR_LIT_1147 = new StringValue("2810");
public static final StringValue __STR_LIT_1148 = new StringValue("2810"); public static final StringValue __STR_LIT_1148 = new StringValue("2830");
public static final StringValue __STR_LIT_1149 = new StringValue("2830"); public static final StringValue __STR_LIT_1149 = new StringValue("2850");
public static final StringValue __STR_LIT_1150 = new StringValue("2850"); public static final StringValue __STR_LIT_1150 = new StringValue("2860");
public static final StringValue __STR_LIT_1151 = new StringValue("2860"); public static final StringValue __STR_LIT_1151 = new StringValue("2870");
public static final StringValue __STR_LIT_1152 = new StringValue("2870"); public static final StringValue __STR_LIT_1152 = new StringValue("2880");
public static final StringValue __STR_LIT_1153 = new StringValue("2880"); public static final StringValue __STR_LIT_1153 = new StringValue("2890");
public static final StringValue __STR_LIT_1154 = new StringValue("2890"); public static final StringValue __STR_LIT_1154 = new StringValue("2920");
public static final StringValue __STR_LIT_1155 = new StringValue("2920"); public static final StringValue __STR_LIT_1155 = new StringValue("2940");
public static final StringValue __STR_LIT_1156 = new StringValue("2940"); public static final StringValue __STR_LIT_1156 = new StringValue("2950");
public static final StringValue __STR_LIT_1157 = new StringValue("2960"); public static final StringValue __STR_LIT_1157 = new StringValue("2960");
public static final StringValue __STR_LIT_1158 = new StringValue("2980"); public static final StringValue __STR_LIT_1158 = new StringValue("2980");
public static final StringValue __STR_LIT_1159 = new StringValue("3011"); public static final StringValue __STR_LIT_1159 = new StringValue("3011");
@ -184,48 +184,52 @@ public class Plausi_ERHEBUNG_PROMOVIERENDE_AB_2017_Segment1
public static final StringValue __STR_LIT_1163 = new StringValue("3660"); public static final StringValue __STR_LIT_1163 = new StringValue("3660");
public static final StringValue __STR_LIT_1164 = new StringValue("3680"); public static final StringValue __STR_LIT_1164 = new StringValue("3680");
public static final StringValue __STR_LIT_1165 = new StringValue("3700"); public static final StringValue __STR_LIT_1165 = new StringValue("3700");
public static final StringValue __STR_LIT_1166 = new StringValue("3930"); public static final StringValue __STR_LIT_1166 = new StringValue("3780");
public static final StringValue __STR_LIT_1167 = new StringValue("3940"); public static final StringValue __STR_LIT_1167 = new StringValue("3930");
public static final StringValue __STR_LIT_1168 = new StringValue("3950"); public static final StringValue __STR_LIT_1168 = new StringValue("3940");
public static final StringValue __STR_LIT_1169 = new StringValue("3971"); public static final StringValue __STR_LIT_1169 = new StringValue("3950");
public static final StringValue __STR_LIT_1170 = new StringValue("3972"); public static final StringValue __STR_LIT_1170 = new StringValue("3971");
public static final StringValue __STR_LIT_1171 = new StringValue("3980"); public static final StringValue __STR_LIT_1171 = new StringValue("3972");
public static final StringValue __STR_LIT_1172 = new StringValue("3990"); public static final StringValue __STR_LIT_1172 = new StringValue("3980");
public static final StringValue __STR_LIT_1173 = new StringValue("4750"); public static final StringValue __STR_LIT_1173 = new StringValue("3990");
public static final StringValue __STR_LIT_1174 = new StringValue("4760"); public static final StringValue __STR_LIT_1174 = new StringValue("4730");
public static final StringValue __STR_LIT_1175 = new StringValue("4770"); public static final StringValue __STR_LIT_1175 = new StringValue("4740");
public static final StringValue __STR_LIT_1176 = new StringValue("4780"); public static final StringValue __STR_LIT_1176 = new StringValue("4750");
public static final StringValue __STR_LIT_1177 = new StringValue("4790"); public static final StringValue __STR_LIT_1177 = new StringValue("4760");
public static final StringValue __STR_LIT_1178 = new StringValue("4800"); public static final StringValue __STR_LIT_1178 = new StringValue("4770");
public static final StringValue __STR_LIT_1179 = new StringValue("4810"); public static final StringValue __STR_LIT_1179 = new StringValue("4780");
public static final StringValue __STR_LIT_1180 = new StringValue("4820"); public static final StringValue __STR_LIT_1180 = new StringValue("4790");
public static final StringValue __STR_LIT_1181 = new StringValue("4830"); public static final StringValue __STR_LIT_1181 = new StringValue("4800");
public static final StringValue __STR_LIT_1182 = new StringValue("4840"); public static final StringValue __STR_LIT_1182 = new StringValue("4810");
public static final StringValue __STR_LIT_1183 = new StringValue("4850"); public static final StringValue __STR_LIT_1183 = new StringValue("4820");
public static final StringValue __STR_LIT_1184 = new StringValue("4860"); public static final StringValue __STR_LIT_1184 = new StringValue("4830");
public static final StringValue __STR_LIT_1185 = new StringValue("4870"); public static final StringValue __STR_LIT_1185 = new StringValue("4840");
public static final StringValue __STR_LIT_1186 = new StringValue("4880"); public static final StringValue __STR_LIT_1186 = new StringValue("4850");
public static final StringValue __STR_LIT_1187 = new StringValue("4890"); public static final StringValue __STR_LIT_1187 = new StringValue("4860");
public static final StringValue __STR_LIT_1188 = new StringValue("4900"); public static final StringValue __STR_LIT_1188 = new StringValue("4870");
public static final StringValue __STR_LIT_1189 = new StringValue("4910"); public static final StringValue __STR_LIT_1189 = new StringValue("4880");
public static final StringValue __STR_LIT_1190 = new StringValue("4920"); public static final StringValue __STR_LIT_1190 = new StringValue("4890");
public static final StringValue __STR_LIT_1191 = new StringValue("4930"); public static final StringValue __STR_LIT_1191 = new StringValue("4900");
public static final StringValue __STR_LIT_1192 = new StringValue("6211"); public static final StringValue __STR_LIT_1192 = new StringValue("4910");
public static final StringValue __STR_LIT_1193 = new StringValue("6220"); public static final StringValue __STR_LIT_1193 = new StringValue("4920");
public static final StringValue __STR_LIT_1194 = new StringValue("6231"); public static final StringValue __STR_LIT_1194 = new StringValue("4930");
public static final StringValue __STR_LIT_1195 = new StringValue("6232"); public static final StringValue __STR_LIT_1195 = new StringValue("6211");
public static final StringValue __STR_LIT_1196 = new StringValue("6233"); public static final StringValue __STR_LIT_1196 = new StringValue("6220");
public static final StringValue __STR_LIT_1197 = new StringValue("6243"); public static final StringValue __STR_LIT_1197 = new StringValue("6231");
public static final StringValue __STR_LIT_1198 = new StringValue("6290"); public static final StringValue __STR_LIT_1198 = new StringValue("6232");
public static final StringValue __STR_LIT_1199 = new StringValue("6370"); public static final StringValue __STR_LIT_1199 = new StringValue("6233");
public static final StringValue __STR_LIT_1200 = new StringValue("7960"); public static final StringValue __STR_LIT_1200 = new StringValue("6243");
public static final StringValue __STR_LIT_1201 = new StringValue("8000"); public static final StringValue __STR_LIT_1201 = new StringValue("6290");
public static final StringValue __STR_LIT_1202 = new StringValue("8011"); public static final StringValue __STR_LIT_1202 = new StringValue("6370");
public static final StringValue __STR_LIT_1203 = new StringValue("8021"); public static final StringValue __STR_LIT_1203 = new StringValue("7960");
public static final StringValue __STR_LIT_1204 = new StringValue("8031"); public static final StringValue __STR_LIT_1204 = new StringValue("8000");
public static final StringValue __STR_LIT_1205 = new StringValue("8032"); public static final StringValue __STR_LIT_1205 = new StringValue("8011");
public static final StringValue __STR_LIT_1206 = new StringValue("8033"); public static final StringValue __STR_LIT_1206 = new StringValue("8021");
public static final StringValue __STR_LIT_1207 = new StringValue("8031");
public static final StringValue __STR_LIT_1208 = new StringValue("8032");
public static final StringValue __STR_LIT_1209 = new StringValue("8033");
public static final NumberValue __NUM_LIT_16 = new NumberValue(6.0); public static final NumberValue __NUM_LIT_16 = new NumberValue(6.0);
public static final StringValue __STR_LIT_1210 = new StringValue("2");
public static final NumberValue __NUM_LIT_17 = new NumberValue(10.0); public static final NumberValue __NUM_LIT_17 = new NumberValue(10.0);
public static final NumberValue __NUM_LIT_18 = new NumberValue(31.0); public static final NumberValue __NUM_LIT_18 = new NumberValue(31.0);
public static final NumberValue __NUM_LIT_19 = new NumberValue(9.0); public static final NumberValue __NUM_LIT_19 = new NumberValue(9.0);
@ -262,105 +266,105 @@ public class Plausi_ERHEBUNG_PROMOVIERENDE_AB_2017_Segment1
public static final NumberValue __NUM_LIT_50 = new NumberValue(2020.0); public static final NumberValue __NUM_LIT_50 = new NumberValue(2020.0);
public static final NumberValue __NUM_LIT_51 = new NumberValue(2024.0); public static final NumberValue __NUM_LIT_51 = new NumberValue(2024.0);
public static final NumberValue __NUM_LIT_52 = new NumberValue(1913.0); public static final NumberValue __NUM_LIT_52 = new NumberValue(1913.0);
public static final StringValue __STR_LIT_1207 = new StringValue("A"); public static final StringValue __STR_LIT_1211 = new StringValue("A");
public static final StringValue __STR_LIT_1208 = new StringValue("a"); public static final StringValue __STR_LIT_1212 = new StringValue("a");
public static final StringValue __STR_LIT_1209 = new StringValue("B"); public static final StringValue __STR_LIT_1213 = new StringValue("B");
public static final StringValue __STR_LIT_1210 = new StringValue("b"); public static final StringValue __STR_LIT_1214 = new StringValue("b");
public static final StringValue __STR_LIT_1211 = new StringValue("C"); public static final StringValue __STR_LIT_1215 = new StringValue("C");
public static final StringValue __STR_LIT_1212 = new StringValue("c"); public static final StringValue __STR_LIT_1216 = new StringValue("c");
public static final StringValue __STR_LIT_1213 = new StringValue("D"); public static final StringValue __STR_LIT_1217 = new StringValue("D");
public static final StringValue __STR_LIT_1214 = new StringValue("d"); public static final StringValue __STR_LIT_1218 = new StringValue("d");
public static final StringValue __STR_LIT_1215 = new StringValue("E"); public static final StringValue __STR_LIT_1219 = new StringValue("E");
public static final StringValue __STR_LIT_1216 = new StringValue("e"); public static final StringValue __STR_LIT_1220 = new StringValue("e");
public static final StringValue __STR_LIT_1217 = new StringValue("F"); public static final StringValue __STR_LIT_1221 = new StringValue("F");
public static final StringValue __STR_LIT_1218 = new StringValue("f"); public static final StringValue __STR_LIT_1222 = new StringValue("f");
public static final StringValue __STR_LIT_1219 = new StringValue("G"); public static final StringValue __STR_LIT_1223 = new StringValue("G");
public static final StringValue __STR_LIT_1220 = new StringValue("g"); public static final StringValue __STR_LIT_1224 = new StringValue("g");
public static final StringValue __STR_LIT_1221 = new StringValue("H"); public static final StringValue __STR_LIT_1225 = new StringValue("H");
public static final StringValue __STR_LIT_1222 = new StringValue("h"); public static final StringValue __STR_LIT_1226 = new StringValue("h");
public static final StringValue __STR_LIT_1223 = new StringValue("I"); public static final StringValue __STR_LIT_1227 = new StringValue("I");
public static final StringValue __STR_LIT_1224 = new StringValue("i"); public static final StringValue __STR_LIT_1228 = new StringValue("i");
public static final StringValue __STR_LIT_1225 = new StringValue("J"); public static final StringValue __STR_LIT_1229 = new StringValue("J");
public static final StringValue __STR_LIT_1226 = new StringValue("j"); public static final StringValue __STR_LIT_1230 = new StringValue("j");
public static final StringValue __STR_LIT_1227 = new StringValue("K"); public static final StringValue __STR_LIT_1231 = new StringValue("K");
public static final StringValue __STR_LIT_1228 = new StringValue("k"); public static final StringValue __STR_LIT_1232 = new StringValue("k");
public static final StringValue __STR_LIT_1229 = new StringValue("L"); public static final StringValue __STR_LIT_1233 = new StringValue("L");
public static final StringValue __STR_LIT_1230 = new StringValue("l"); public static final StringValue __STR_LIT_1234 = new StringValue("l");
public static final StringValue __STR_LIT_1231 = new StringValue("M"); public static final StringValue __STR_LIT_1235 = new StringValue("M");
public static final StringValue __STR_LIT_1232 = new StringValue("m"); public static final StringValue __STR_LIT_1236 = new StringValue("m");
public static final StringValue __STR_LIT_1233 = new StringValue("N"); public static final StringValue __STR_LIT_1237 = new StringValue("N");
public static final StringValue __STR_LIT_1234 = new StringValue("n"); public static final StringValue __STR_LIT_1238 = new StringValue("n");
public static final StringValue __STR_LIT_1235 = new StringValue("O"); public static final StringValue __STR_LIT_1239 = new StringValue("O");
public static final StringValue __STR_LIT_1236 = new StringValue("o"); public static final StringValue __STR_LIT_1240 = new StringValue("o");
public static final StringValue __STR_LIT_1237 = new StringValue("P"); public static final StringValue __STR_LIT_1241 = new StringValue("P");
public static final StringValue __STR_LIT_1238 = new StringValue("p"); public static final StringValue __STR_LIT_1242 = new StringValue("p");
public static final StringValue __STR_LIT_1239 = new StringValue("Q"); public static final StringValue __STR_LIT_1243 = new StringValue("Q");
public static final StringValue __STR_LIT_1240 = new StringValue("q"); public static final StringValue __STR_LIT_1244 = new StringValue("q");
public static final StringValue __STR_LIT_1241 = new StringValue("R"); public static final StringValue __STR_LIT_1245 = new StringValue("R");
public static final StringValue __STR_LIT_1242 = new StringValue("r"); public static final StringValue __STR_LIT_1246 = new StringValue("r");
public static final StringValue __STR_LIT_1243 = new StringValue("S"); public static final StringValue __STR_LIT_1247 = new StringValue("S");
public static final StringValue __STR_LIT_1244 = new StringValue("s"); public static final StringValue __STR_LIT_1248 = new StringValue("s");
public static final StringValue __STR_LIT_1245 = new StringValue("T"); public static final StringValue __STR_LIT_1249 = new StringValue("T");
public static final StringValue __STR_LIT_1246 = new StringValue("t"); public static final StringValue __STR_LIT_1250 = new StringValue("t");
public static final StringValue __STR_LIT_1247 = new StringValue("U"); public static final StringValue __STR_LIT_1251 = new StringValue("U");
public static final StringValue __STR_LIT_1248 = new StringValue("u"); public static final StringValue __STR_LIT_1252 = new StringValue("u");
public static final StringValue __STR_LIT_1249 = new StringValue("V"); public static final StringValue __STR_LIT_1253 = new StringValue("V");
public static final StringValue __STR_LIT_1250 = new StringValue("v"); public static final StringValue __STR_LIT_1254 = new StringValue("v");
public static final StringValue __STR_LIT_1251 = new StringValue("W"); public static final StringValue __STR_LIT_1255 = new StringValue("W");
public static final StringValue __STR_LIT_1252 = new StringValue("w"); public static final StringValue __STR_LIT_1256 = new StringValue("w");
public static final StringValue __STR_LIT_1253 = new StringValue("X"); public static final StringValue __STR_LIT_1257 = new StringValue("X");
public static final StringValue __STR_LIT_1254 = new StringValue("x"); public static final StringValue __STR_LIT_1258 = new StringValue("x");
public static final StringValue __STR_LIT_1255 = new StringValue("Y"); public static final StringValue __STR_LIT_1259 = new StringValue("Y");
public static final StringValue __STR_LIT_1256 = new StringValue("y"); public static final StringValue __STR_LIT_1260 = new StringValue("y");
public static final StringValue __STR_LIT_1257 = new StringValue("Z"); public static final StringValue __STR_LIT_1261 = new StringValue("Z");
public static final StringValue __STR_LIT_1258 = new StringValue("z"); public static final StringValue __STR_LIT_1262 = new StringValue("z");
public static final StringValue __STR_LIT_1259 = new StringValue("112"); public static final StringValue __STR_LIT_1263 = new StringValue("112");
public static final StringValue __STR_LIT_1260 = new StringValue("113"); public static final StringValue __STR_LIT_1264 = new StringValue("113");
public static final StringValue __STR_LIT_1261 = new StringValue("114"); public static final StringValue __STR_LIT_1265 = new StringValue("114");
public static final StringValue __STR_LIT_1262 = new StringValue("115"); public static final StringValue __STR_LIT_1266 = new StringValue("115");
public static final StringValue __STR_LIT_1263 = new StringValue("116"); public static final StringValue __STR_LIT_1267 = new StringValue("116");
public static final StringValue __STR_LIT_1264 = new StringValue("182"); public static final StringValue __STR_LIT_1268 = new StringValue("182");
public static final StringValue __STR_LIT_1265 = new StringValue("211"); public static final StringValue __STR_LIT_1269 = new StringValue("211");
public static final StringValue __STR_LIT_1266 = new StringValue("214"); public static final StringValue __STR_LIT_1270 = new StringValue("214");
public static final StringValue __STR_LIT_1267 = new StringValue("216"); public static final StringValue __STR_LIT_1271 = new StringValue("216");
public static final StringValue __STR_LIT_1268 = new StringValue("311"); public static final StringValue __STR_LIT_1272 = new StringValue("311");
public static final StringValue __STR_LIT_1269 = new StringValue("315"); public static final StringValue __STR_LIT_1273 = new StringValue("315");
public static final StringValue __STR_LIT_1270 = new StringValue("316"); public static final StringValue __STR_LIT_1274 = new StringValue("316");
public static final StringValue __STR_LIT_1271 = new StringValue("317"); public static final StringValue __STR_LIT_1275 = new StringValue("317");
public static final StringValue __STR_LIT_1272 = new StringValue("319"); public static final StringValue __STR_LIT_1276 = new StringValue("319");
public static final StringValue __STR_LIT_1273 = new StringValue("321"); public static final StringValue __STR_LIT_1277 = new StringValue("321");
public static final StringValue __STR_LIT_1274 = new StringValue("325"); public static final StringValue __STR_LIT_1278 = new StringValue("325");
public static final StringValue __STR_LIT_1275 = new StringValue("329"); public static final StringValue __STR_LIT_1279 = new StringValue("329");
public static final StringValue __STR_LIT_1276 = new StringValue("331"); public static final StringValue __STR_LIT_1280 = new StringValue("331");
public static final StringValue __STR_LIT_1277 = new StringValue("338"); public static final StringValue __STR_LIT_1281 = new StringValue("338");
public static final StringValue __STR_LIT_1278 = new StringValue("341"); public static final StringValue __STR_LIT_1282 = new StringValue("341");
public static final StringValue __STR_LIT_1279 = new StringValue("342"); public static final StringValue __STR_LIT_1283 = new StringValue("342");
public static final StringValue __STR_LIT_1280 = new StringValue("343"); public static final StringValue __STR_LIT_1284 = new StringValue("343");
public static final StringValue __STR_LIT_1281 = new StringValue("344"); public static final StringValue __STR_LIT_1285 = new StringValue("344");
public static final StringValue __STR_LIT_1282 = new StringValue("352"); public static final StringValue __STR_LIT_1286 = new StringValue("352");
public static final StringValue __STR_LIT_1283 = new StringValue("510"); public static final StringValue __STR_LIT_1287 = new StringValue("510");
public static final StringValue __STR_LIT_1284 = new StringValue("511"); public static final StringValue __STR_LIT_1288 = new StringValue("511");
public static final StringValue __STR_LIT_1285 = new StringValue("512"); public static final StringValue __STR_LIT_1289 = new StringValue("512");
public static final StringValue __STR_LIT_1286 = new StringValue("513"); public static final StringValue __STR_LIT_1290 = new StringValue("513");
public static final StringValue __STR_LIT_1287 = new StringValue("514"); public static final StringValue __STR_LIT_1291 = new StringValue("514");
public static final StringValue __STR_LIT_1288 = new StringValue("515"); public static final StringValue __STR_LIT_1292 = new StringValue("515");
public static final StringValue __STR_LIT_1289 = new StringValue("517"); public static final StringValue __STR_LIT_1293 = new StringValue("517");
public static final StringValue __STR_LIT_1290 = new StringValue("519"); public static final StringValue __STR_LIT_1294 = new StringValue("519");
public static final StringValue __STR_LIT_1291 = new StringValue("520"); public static final StringValue __STR_LIT_1295 = new StringValue("520");
public static final StringValue __STR_LIT_1292 = new StringValue("521"); public static final StringValue __STR_LIT_1296 = new StringValue("521");
public static final StringValue __STR_LIT_1293 = new StringValue("522"); public static final StringValue __STR_LIT_1297 = new StringValue("522");
public static final StringValue __STR_LIT_1294 = new StringValue("525"); public static final StringValue __STR_LIT_1298 = new StringValue("525");
public static final StringValue __STR_LIT_1295 = new StringValue("528"); public static final StringValue __STR_LIT_1299 = new StringValue("528");
public static final StringValue __STR_LIT_1296 = new StringValue("529"); public static final StringValue __STR_LIT_1300 = new StringValue("529");
public static final StringValue __STR_LIT_1297 = new StringValue("534"); public static final StringValue __STR_LIT_1301 = new StringValue("534");
public static final StringValue __STR_LIT_1298 = new StringValue("535"); public static final StringValue __STR_LIT_1302 = new StringValue("535");
public static final StringValue __STR_LIT_1299 = new StringValue("542"); public static final StringValue __STR_LIT_1303 = new StringValue("542");
public static final StringValue __STR_LIT_1300 = new StringValue("546"); public static final StringValue __STR_LIT_1304 = new StringValue("546");
public static final StringValue __STR_LIT_1301 = new StringValue("547"); public static final StringValue __STR_LIT_1305 = new StringValue("547");
public static final StringValue __STR_LIT_1302 = new StringValue("548"); public static final StringValue __STR_LIT_1306 = new StringValue("548");
public static final StringValue __STR_LIT_1303 = new StringValue("549"); public static final StringValue __STR_LIT_1307 = new StringValue("549");
public static final StringValue __STR_LIT_1304 = new StringValue("9500"); public static final StringValue __STR_LIT_1308 = new StringValue("9500");
public static final StringValue __STR_LIT_1305 = new StringValue("9990"); public static final StringValue __STR_LIT_1309 = new StringValue("9990");
public static final NumberValue __NUM_LIT_53 = new NumberValue(1990.0); public static final NumberValue __NUM_LIT_53 = new NumberValue(1990.0);
public static final NumberValue __NUM_LIT_54 = new NumberValue(1991.0); public static final NumberValue __NUM_LIT_54 = new NumberValue(1991.0);
public static final NumberValue __NUM_LIT_55 = new NumberValue(1923.0); public static final NumberValue __NUM_LIT_55 = new NumberValue(1923.0);
@ -368,44 +372,44 @@ public class Plausi_ERHEBUNG_PROMOVIERENDE_AB_2017_Segment1
public static final NumberValue __NUM_LIT_57 = new NumberValue(4001.0); public static final NumberValue __NUM_LIT_57 = new NumberValue(4001.0);
public static final NumberValue __NUM_LIT_58 = new NumberValue(4002.0); public static final NumberValue __NUM_LIT_58 = new NumberValue(4002.0);
public static final NumberValue __NUM_LIT_59 = new NumberValue(4500.0); public static final NumberValue __NUM_LIT_59 = new NumberValue(4500.0);
public static final StringValue __STR_LIT_1306 = new StringValue("409A"); public static final StringValue __STR_LIT_1310 = new StringValue("409A");
public static final StringValue __STR_LIT_1307 = new StringValue("409B"); public static final StringValue __STR_LIT_1311 = new StringValue("409B");
public static final StringValue __STR_LIT_1308 = new StringValue("409C"); public static final StringValue __STR_LIT_1312 = new StringValue("409C");
public static final StringValue __STR_LIT_1309 = new StringValue("409D"); public static final StringValue __STR_LIT_1313 = new StringValue("409D");
public static final StringValue __STR_LIT_1310 = new StringValue("409E"); public static final StringValue __STR_LIT_1314 = new StringValue("409E");
public static final StringValue __STR_LIT_1311 = new StringValue("186"); public static final StringValue __STR_LIT_1315 = new StringValue("186");
public static final StringValue __STR_LIT_1312 = new StringValue("187"); public static final StringValue __STR_LIT_1316 = new StringValue("187");
public static final StringValue __STR_LIT_1313 = new StringValue("7"); public static final StringValue __STR_LIT_1317 = new StringValue("7");
public static final NumberValue __NUM_LIT_60 = new NumberValue(0.0); public static final NumberValue __NUM_LIT_60 = new NumberValue(0.0);
public static final NumberValue __NUM_LIT_61 = new NumberValue(20.0); public static final NumberValue __NUM_LIT_61 = new NumberValue(20.0);
public static final StringValue __STR_LIT_1314 = new StringValue("2017"); public static final StringValue __STR_LIT_1318 = new StringValue("2017");
public static final StringValue __STR_LIT_1315 = new StringValue("107"); public static final StringValue __STR_LIT_1319 = new StringValue("107");
public static final StringValue __STR_LIT_1316 = new StringValue("185"); public static final StringValue __STR_LIT_1320 = new StringValue("185");
public static final StringValue __STR_LIT_1317 = new StringValue("135"); public static final StringValue __STR_LIT_1321 = new StringValue("135");
public static final StringValue __STR_LIT_1318 = new StringValue("E10"); public static final StringValue __STR_LIT_1322 = new StringValue("E10");
public static final StringValue __STR_LIT_1319 = new StringValue("E11"); public static final StringValue __STR_LIT_1323 = new StringValue("E11");
public static final StringValue __STR_LIT_1320 = new StringValue("a47"); public static final StringValue __STR_LIT_1324 = new StringValue("a47");
public static final StringValue __STR_LIT_1321 = new StringValue("a58"); public static final StringValue __STR_LIT_1325 = new StringValue("a58");
public static final StringValue __STR_LIT_1322 = new StringValue("a80"); public static final StringValue __STR_LIT_1326 = new StringValue("a80");
public static final StringValue __STR_LIT_1323 = new StringValue("a81"); public static final StringValue __STR_LIT_1327 = new StringValue("a81");
public static final StringValue __STR_LIT_1324 = new StringValue("a82"); public static final StringValue __STR_LIT_1328 = new StringValue("a82");
public static final StringValue __STR_LIT_1325 = new StringValue("a83"); public static final StringValue __STR_LIT_1329 = new StringValue("a83");
public static final StringValue __STR_LIT_1326 = new StringValue("a84"); public static final StringValue __STR_LIT_1330 = new StringValue("a84");
public static final StringValue __STR_LIT_1327 = new StringValue("b59"); public static final StringValue __STR_LIT_1331 = new StringValue("b59");
public static final StringValue __STR_LIT_1328 = new StringValue("b68"); public static final StringValue __STR_LIT_1332 = new StringValue("b68");
public static final StringValue __STR_LIT_1329 = new StringValue("g05"); public static final StringValue __STR_LIT_1333 = new StringValue("g05");
public static final StringValue __STR_LIT_1330 = new StringValue("g21"); public static final StringValue __STR_LIT_1334 = new StringValue("g21");
public static final StringValue __STR_LIT_1331 = new StringValue("g73"); public static final StringValue __STR_LIT_1335 = new StringValue("g73");
public static final StringValue __STR_LIT_1332 = new StringValue("h32"); public static final StringValue __STR_LIT_1336 = new StringValue("h32");
public static final StringValue __STR_LIT_1333 = new StringValue("h36"); public static final StringValue __STR_LIT_1337 = new StringValue("h36");
public static final StringValue __STR_LIT_1334 = new StringValue("i74"); public static final StringValue __STR_LIT_1338 = new StringValue("i74");
public static final StringValue __STR_LIT_1335 = new StringValue("156"); public static final StringValue __STR_LIT_1339 = new StringValue("156");
public static final StringValue __STR_LIT_1336 = new StringValue("021"); public static final StringValue __STR_LIT_1340 = new StringValue("021");
public static final NumberValue __NUM_LIT_62 = new NumberValue(16.0); public static final NumberValue __NUM_LIT_62 = new NumberValue(16.0);
public static final StringValue __STR_LIT_1337 = new StringValue("9"); public static final StringValue __STR_LIT_1341 = new StringValue("9");
public static final StringValue __STR_LIT_1338 = new StringValue("5503"); public static final StringValue __STR_LIT_1342 = new StringValue("5503");
public static final StringValue __STR_LIT_1339 = new StringValue("5313"); public static final StringValue __STR_LIT_1343 = new StringValue("5313");
public static final StringValue __STR_LIT_1340 = new StringValue("5314"); public static final StringValue __STR_LIT_1344 = new StringValue("5314");
public static final NumberValue __NUM_LIT_63 = new NumberValue(15.0); public static final NumberValue __NUM_LIT_63 = new NumberValue(15.0);
public static final NumberValue __NUM_LIT_64 = new NumberValue(19.0); public static final NumberValue __NUM_LIT_64 = new NumberValue(19.0);
public static final NumberValue __NUM_LIT_65 = new NumberValue(50.0); public static final NumberValue __NUM_LIT_65 = new NumberValue(50.0);
@ -424,23 +428,23 @@ public class Plausi_ERHEBUNG_PROMOVIERENDE_AB_2017_Segment1
public static final NumberValue __NUM_LIT_78 = new NumberValue(82.0); public static final NumberValue __NUM_LIT_78 = new NumberValue(82.0);
public static final NumberValue __NUM_LIT_79 = new NumberValue(93.0); public static final NumberValue __NUM_LIT_79 = new NumberValue(93.0);
public static final NumberValue __NUM_LIT_80 = new NumberValue(94.0); public static final NumberValue __NUM_LIT_80 = new NumberValue(94.0);
public static final StringValue __STR_LIT_1341 = new StringValue("042"); public static final StringValue __STR_LIT_1345 = new StringValue("042");
public static final StringValue __STR_LIT_1342 = new StringValue("764"); public static final StringValue __STR_LIT_1346 = new StringValue("764");
public static final NumberValue __NUM_LIT_81 = new NumberValue(84.0); public static final NumberValue __NUM_LIT_81 = new NumberValue(84.0);
public static final NumberValue __NUM_LIT_82 = new NumberValue(90.0); public static final NumberValue __NUM_LIT_82 = new NumberValue(90.0);
public static final StringValue __STR_LIT_1343 = new StringValue("673"); public static final StringValue __STR_LIT_1347 = new StringValue("673");
public static final StringValue __STR_LIT_1344 = new StringValue("768"); public static final StringValue __STR_LIT_1348 = new StringValue("768");
public static final StringValue __STR_LIT_1345 = new StringValue("593"); public static final StringValue __STR_LIT_1349 = new StringValue("593");
public static final StringValue __STR_LIT_1346 = new StringValue("33"); public static final StringValue __STR_LIT_1350 = new StringValue("33");
public static final StringValue __STR_LIT_1347 = new StringValue("52"); public static final StringValue __STR_LIT_1351 = new StringValue("52");
public static final StringValue __STR_LIT_1348 = new StringValue("77"); public static final StringValue __STR_LIT_1352 = new StringValue("77");
public static final NumberValue __NUM_LIT_83 = new NumberValue(14.0); public static final NumberValue __NUM_LIT_83 = new NumberValue(14.0);
public static final StringValue __STR_LIT_1349 = new StringValue("117"); public static final StringValue __STR_LIT_1353 = new StringValue("117");
public static final StringValue __STR_LIT_1350 = new StringValue("817"); public static final StringValue __STR_LIT_1354 = new StringValue("817");
public static final StringValue __STR_LIT_1351 = new StringValue("506"); public static final StringValue __STR_LIT_1355 = new StringValue("506");
public static final StringValue __STR_LIT_1352 = new StringValue("591"); public static final StringValue __STR_LIT_1356 = new StringValue("591");
public static final StringValue __STR_LIT_1353 = new StringValue("592"); public static final StringValue __STR_LIT_1357 = new StringValue("592");
public static final StringValue __STR_LIT_1354 = new StringValue("507"); public static final StringValue __STR_LIT_1358 = new StringValue("507");
public static final StringValue __STR_LIT_1355 = new StringValue("807"); public static final StringValue __STR_LIT_1359 = new StringValue("807");
public static final StringValue __STR_LIT_1356 = new StringValue("997"); public static final StringValue __STR_LIT_1360 = new StringValue("997");
} }

18279
src/de/statspez/plausi/generated/Plausi_ERHEBUNG_STUDENTEN_PRUEFUNGEN_AB_2017.java

File diff suppressed because one or more lines are too long

19648
src/de/statspez/plausi/generated/Plausi_ERHEBUNG_STUDENTEN_PRUEFUNGEN_AB_2017.xml

File diff suppressed because it is too large Load Diff

BIN
src/de/statspez/plausi/generated/Plausi_ERHEBUNG_STUDENTEN_PRUEFUNGEN_AB_2017_Descriptor.data

Binary file not shown.

1218
src/de/statspez/plausi/generated/Plausi_ERHEBUNG_STUDENTEN_PRUEFUNGEN_AB_2017_Segment1.java

File diff suppressed because it is too large Load Diff

60
src/de/superx/access/DbSqlRestrictionProvider.java

@ -0,0 +1,60 @@
package de.superx.access;
import javax.sql.DataSource;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.support.rowset.SqlRowSet;
import org.springframework.stereotype.Service;
import net.sf.jsqlparser.JSQLParserException;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
import net.sf.jsqlparser.statement.select.Select;
@Service()
public class DbSqlRestrictionProvider implements SqlRestrictionProvider, InitializingBean {
@Autowired
DataSource dataSource;
private JdbcTemplate jt;
@Override
public Select getRestriction(String username, String userrole, String schemaName, String tableName, int orgunitLid) {
try {
String lookupSql = String.format(
"SELECT restriction FROM view_rechte"
+ " WHERE user_name = '%s' AND role_name = '%s'"
+ " AND schema_name = '%s' AND table_name = '%s'"
+ " AND orgunit_lid = '%d';",
username, userrole, schemaName, tableName, Integer.valueOf(orgunitLid));
SqlRowSet result = jt.queryForRowSet(lookupSql);
result.beforeFirst();
String restriction = "";
while (result.next()) {
restriction = result.getString("restriction");
}
String resultSql = String.format(
"(SELECT * FROM %s.%s %s) AS %s",
schemaName, tableName, restriction, tableName);
Select select = (Select)CCJSqlParserUtil.parse(resultSql);
return select;
} catch (DataAccessException e) {
throw new IllegalStateException("Restriction lookup failed", e);
} catch (JSQLParserException e) {
throw new IllegalStateException("Generated restriction SQL is invalid", e);
}
}
@Override
public void afterPropertiesSet() throws Exception {
this.jt = new JdbcTemplate(dataSource);
}
}

82
src/de/superx/access/FromItemVisitor.java

@ -0,0 +1,82 @@
package de.superx.access;
import net.sf.jsqlparser.schema.Table;
import net.sf.jsqlparser.statement.piped.FromQuery;
import net.sf.jsqlparser.statement.select.LateralSubSelect;
import net.sf.jsqlparser.statement.select.ParenthesedFromItem;
import net.sf.jsqlparser.statement.select.ParenthesedSelect;
import net.sf.jsqlparser.statement.select.PlainSelect;
import net.sf.jsqlparser.statement.select.SetOperationList;
import net.sf.jsqlparser.statement.select.TableFunction;
import net.sf.jsqlparser.statement.select.TableStatement;
import net.sf.jsqlparser.statement.select.Values;
public class FromItemVisitor implements net.sf.jsqlparser.statement.select.FromItemVisitor<Void> {
private SqlAccessRestrictor sqlAccessRestrictor;
public FromItemVisitor(SqlAccessRestrictor sqlAccessRestrictor) {
this.sqlAccessRestrictor = sqlAccessRestrictor;
}
@Override
public <S> Void visit(Table tableName, S context) {
System.out.println("FromItemVisitor.Table should not be printed ");
return null;
}
@Override
public <S> Void visit(ParenthesedSelect selectBody, S context) {
System.out.println("FromItemVisitor. should not be printed ");
return null;
}
@Override
public <S> Void visit(LateralSubSelect lateralSubSelect, S context) {
System.out.println("FromItemVisitor. should not be printed ");
return null;
}
@Override
public <S> Void visit(TableFunction tableFunction, S context) {
System.out.println("FromItemVisitor. should not be printed ");
return null;
}
@Override
public <S> Void visit(ParenthesedFromItem parenthesedFromItem, S context) {
System.out.println("FromItemVisitor.ParenthesedFromItem should not be printed ");
return null;
}
@Override
public <S> Void visit(Values values, S context) {
System.out.println("FromItemVisitor. should not be printed ");
return null;
}
@Override
public <S> Void visit(PlainSelect plainSelect, S context) {
System.out.println("FromItemVisitor.PlainSelect should not be printed ");
return null;
}
@Override
public <S> Void visit(SetOperationList setOperationList, S context) {
System.out.println("FromItemVisitor. should not be printed ");
return null;
}
@Override
public <S> Void visit(TableStatement tableStatement, S context) {
System.out.println("FromItemVisitor. should not be printed ");
return null;
}
@Override
public <S> Void visit(FromQuery fromQuery, S context) {
System.out.println("FromItemVisitor. should not be printed ");
return null;
}
}

139
src/de/superx/access/InlineSelectVisitor.java

@ -0,0 +1,139 @@
package de.superx.access;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import net.sf.jsqlparser.schema.Table;
import net.sf.jsqlparser.statement.piped.FromQuery;
import net.sf.jsqlparser.statement.select.FromItem;
import net.sf.jsqlparser.statement.select.Join;
import net.sf.jsqlparser.statement.select.LateralSubSelect;
import net.sf.jsqlparser.statement.select.ParenthesedSelect;
import net.sf.jsqlparser.statement.select.PlainSelect;
import net.sf.jsqlparser.statement.select.Select;
import net.sf.jsqlparser.statement.select.SetOperationList;
import net.sf.jsqlparser.statement.select.TableStatement;
import net.sf.jsqlparser.statement.select.Values;
import net.sf.jsqlparser.statement.select.WithItem;
public class InlineSelectVisitor implements net.sf.jsqlparser.statement.select.SelectVisitor<Void> {
private SqlAccessRestrictor sqlAccessRestrictor;
private String userName;
private String roleName;
private int orgunitLid;
public InlineSelectVisitor(SqlAccessRestrictor sqlAccessRestrictor, String userName, String roleName, int orgunitLid) {
this.sqlAccessRestrictor = sqlAccessRestrictor;
this.userName = userName;
this.roleName = roleName;
this.orgunitLid = orgunitLid;
}
@Override
public <S> Void visit(ParenthesedSelect parenthesedSelect, S context) {
// TODO Auto-generated method stub
System.out.println("SelectVisitor.ParenthesedSelect should not be printed ");
return null;
}
@Override
public <S> Void visit(PlainSelect plainSelect, S context) {
FromItemVisitor fiv = this.sqlAccessRestrictor.getFromItemVisitor();
// Collect CTE names visible to this select
Set<String> cteNames = new HashSet<>();
if (plainSelect.getWithItemsList() != null) {
for (WithItem<?> withItem : plainSelect.getWithItemsList()) {
cteNames.add(withItem.getAlias() != null
? withItem.getAlias().getName()
: withItem.getAliasName());
}
}
FromItem selectFi = plainSelect.getFromItem();
if (selectFi instanceof Table table) {
if (!isCteTable(table, cteNames)) {
plainSelect.setFromItem(editFromItem(table));
}
} else if (selectFi != null) {
selectFi.accept(fiv);
}
List<Join> joins = plainSelect.getJoins();
if (joins != null) {
for (Join join : joins) {
FromItem fi = join.getFromItem();
if (fi instanceof Table table) {
if (!isCteTable(table, cteNames)) {
join.setFromItem(editFromItem(table));
}
} else if (fi != null) {
fi.accept(fiv);
}
}
}
return null;
}
private boolean isCteTable(Table table, Set<String> cteNames) {
String name = table.getName();
return name != null && cteNames.contains(name);
}
private FromItem editFromItem(Table tableName) {
SqlRestrictionProvider sqlRestrictionProvider = sqlAccessRestrictor.getSqlRestrictionProvider();
String table = tableName.getName();
String schemaName = tableName.getSchemaName();
Select select = sqlRestrictionProvider.getRestriction(userName, roleName, schemaName, table, orgunitLid);
if(tableName.getAlias() != null) {
select.setAlias(tableName.getAlias());
}
return select;
}
@Override
public <S> Void visit(FromQuery fromQuery, S context) {
// TODO Auto-generated method stub
System.out.println("SelectVisitor.FromQuery should not be printed ");
return null;
}
@Override
public <S> Void visit(SetOperationList setOpList, S context) {
// TODO Auto-generated method stub
System.out.println("SelectVisitor.SetOperationList should not be printed ");
return null;
}
@Override
public <S> Void visit(WithItem<?> withItem, S context) {
// TODO Auto-generated method stub
System.out.println("SelectVisitor.WithItem<?> should not be printed ");
return null;
}
@Override
public <S> Void visit(Values values, S context) {
// TODO Auto-generated method stub
System.out.println("SelectVisitor.Values should not be printed ");
return null;
}
@Override
public <S> Void visit(LateralSubSelect lateralSubSelect, S context) {
// TODO Auto-generated method stub
System.out.println("SelectVisitor.LateralSubSelect should not be printed ");
return null;
}
@Override
public <S> Void visit(TableStatement tableStatement, S context) {
// TODO Auto-generated method stub
System.out.println("SelectVisitor.TableStatement should not be printed ");
return null;
}
}

109
src/de/superx/access/SchemaSelectVisitor.java

@ -0,0 +1,109 @@
package de.superx.access;
import java.util.List;
import net.sf.jsqlparser.schema.Table;
import net.sf.jsqlparser.statement.piped.FromQuery;
import net.sf.jsqlparser.statement.select.FromItem;
import net.sf.jsqlparser.statement.select.Join;
import net.sf.jsqlparser.statement.select.LateralSubSelect;
import net.sf.jsqlparser.statement.select.ParenthesedSelect;
import net.sf.jsqlparser.statement.select.PlainSelect;
import net.sf.jsqlparser.statement.select.Select;
import net.sf.jsqlparser.statement.select.SetOperationList;
import net.sf.jsqlparser.statement.select.TableStatement;
import net.sf.jsqlparser.statement.select.Values;
import net.sf.jsqlparser.statement.select.WithItem;
public class SchemaSelectVisitor implements net.sf.jsqlparser.statement.select.SelectVisitor<Void> {
private SqlAccessRestrictor sqlAccessRestrictor;
private String userName;
private String roleName;
public SchemaSelectVisitor(SqlAccessRestrictor sqlAccessRestrictor, String userName, String roleName) {
this.sqlAccessRestrictor = sqlAccessRestrictor;
this.userName = userName;
this.roleName = roleName;
}
@Override
public <S> Void visit(ParenthesedSelect parenthesedSelect, S context) {
// TODO Auto-generated method stub
System.out.println("SelectVisitor.ParenthesedSelect should not be printed ");
return null;
}
@Override
public <S> Void visit(PlainSelect plainSelect, S context) {
System.out.println("SelectVisitor.PlainSelect should not be printed ");
FromItemVisitor fiv = this.sqlAccessRestrictor.getFromItemVisitor();
FromItem selectfi = plainSelect.getFromItem();
if (selectfi instanceof Table) {
plainSelect.setFromItem(editFromItem((Table)plainSelect.getFromItem()));
} else {
selectfi.accept(fiv);
}
List<Join> joins = plainSelect.getJoins();
if (joins != null) {
for(Join join : joins) {
FromItem fi = join.getFromItem();
if (fi instanceof Table) {
join.setFromItem(editFromItem((Table)join.getFromItem()));
} else {
fi.accept(fiv);
}
}
}
return null;
}
private FromItem editFromItem(Table tableName) {
tableName.setSchemaName(tableName.getSchemaName() + "_" + this.userName);
return tableName;
}
@Override
public <S> Void visit(FromQuery fromQuery, S context) {
// TODO Auto-generated method stub
System.out.println("SelectVisitor.FromQuery should not be printed ");
return null;
}
@Override
public <S> Void visit(SetOperationList setOpList, S context) {
// TODO Auto-generated method stub
System.out.println("SelectVisitor.SetOperationList should not be printed ");
return null;
}
@Override
public <S> Void visit(WithItem<?> withItem, S context) {
// TODO Auto-generated method stub
System.out.println("SelectVisitor.WithItem<?> should not be printed ");
return null;
}
@Override
public <S> Void visit(Values values, S context) {
// TODO Auto-generated method stub
System.out.println("SelectVisitor.Values should not be printed ");
return null;
}
@Override
public <S> Void visit(LateralSubSelect lateralSubSelect, S context) {
// TODO Auto-generated method stub
System.out.println("SelectVisitor.LateralSubSelect should not be printed ");
return null;
}
@Override
public <S> Void visit(TableStatement tableStatement, S context) {
// TODO Auto-generated method stub
System.out.println("SelectVisitor.TableStatement should not be printed ");
return null;
}
}

111
src/de/superx/access/SqlAccessRestrictor.java

@ -0,0 +1,111 @@
package de.superx.access;
import java.io.InputStream;
import net.sf.jsqlparser.JSQLParserException;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
import net.sf.jsqlparser.statement.Statement;
import net.sf.jsqlparser.statement.select.Select;
import net.sf.jsqlparser.statement.select.SelectVisitor;
import net.sf.jsqlparser.util.deparser.StatementDeParser;
/*
* Diese Klasse soll die Einschränkungen auf Daten umsetzen.
* Funktionsweise:
* Die Einschränkungen beim Datenzugriff werden in dafür geeigneten
* Strukturen gespeichert.
* Wenn man ein SQL-Statement aufgebaut hat, dann lässt übergibt man
* dieses dem 'SqlAccessRestrictor', welcher die Einschränkungen
* benutzerspezifisch anwendet, d.h. er parst das SQL und setzt
* an den Stellen des Tabellenzugriffs die Einschränkungen um.
* Mögliche "Schwachstellen": Wenn der Zugriff über eine SQL-Prozedur
* erfolgt, kann die Einschränkung innerhalb der Prozedur (vermutlich)
* nicht durchgesetzt werden.
* ACHTUNG:
* 1. funktioniert nur mit Standard-SQL, PostgreSQL-Spezifika verursachen Parserfehler
* 2. bislang nicht für alle syntaktischen Konstrukte ausimplementiert, nur "SELECT ... FROM <table> JOIN <table>;"
*/
public class SqlAccessRestrictor {
public enum Rechtekonzept {
NONE,
INLINE_SQL,
ROW_LEVEL_SECURITY
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
private SelectVisitor<Void> selectVisitor;
private FromItemVisitor fromItemVisitor;
private StatementVisitor statementVisitor;
private SqlRestrictionProvider sqlRestrictionProvider;
private String userName;
private String roleName;
private int orgunitLid;
public static final Rechtekonzept rechteModus = Rechtekonzept.INLINE_SQL;
public SqlAccessRestrictor(SqlRestrictionProvider sqlRestrictionProvider, String userName, String roleName, int orgunitLid) {
if (rechteModus == Rechtekonzept.INLINE_SQL) {
this.selectVisitor = new InlineSelectVisitor(this, userName, roleName, orgunitLid);
}
this.fromItemVisitor = new FromItemVisitor(this);
this.statementVisitor = new StatementVisitor(this);
this.sqlRestrictionProvider = sqlRestrictionProvider;
this.userName = userName;
this.roleName = roleName;
this.orgunitLid = orgunitLid;
}
public FromItemVisitor getFromItemVisitor() {
return this.fromItemVisitor;
}
public SelectVisitor<Void> getSelectVisitor() {
return this.selectVisitor;
}
public StatementVisitor getStatementVisitor() {
return this.statementVisitor;
}
public SqlRestrictionProvider getSqlRestrictionProvider() {
return this.sqlRestrictionProvider;
}
public String restrictSql(String sql) throws JSQLParserException {
if(sql == null || sql.isBlank()) {
return "";
}
Statement select = CCJSqlParserUtil.parse(sql);
select.accept(this.statementVisitor);
StringBuilder builder = new StringBuilder();
StatementDeParser sdp = new StatementDeParser(builder);
sdp.visit((Select)select);
return builder.toString();
}
public String restrictSql(InputStream sql) throws JSQLParserException {
Statement select = CCJSqlParserUtil.parse(sql);
select.accept(this.statementVisitor);
StringBuilder builder = new StringBuilder();
StatementDeParser sdp = new StatementDeParser(builder);
sdp.visit((Select)select);
return builder.toString();
}
}

8
src/de/superx/access/SqlRestrictionProvider.java

@ -0,0 +1,8 @@
package de.superx.access;
import net.sf.jsqlparser.statement.select.Select;
public interface SqlRestrictionProvider {
public Select getRestriction(String username, String userrole, String schemaName, String tableName, int orgunitLid);
}

343
src/de/superx/access/StatementVisitor.java

@ -0,0 +1,343 @@
package de.superx.access;
import net.sf.jsqlparser.statement.Block;
import net.sf.jsqlparser.statement.Commit;
import net.sf.jsqlparser.statement.CreateFunctionalStatement;
import net.sf.jsqlparser.statement.DeclareStatement;
import net.sf.jsqlparser.statement.DescribeStatement;
import net.sf.jsqlparser.statement.ExplainStatement;
import net.sf.jsqlparser.statement.IfElseStatement;
import net.sf.jsqlparser.statement.PurgeStatement;
import net.sf.jsqlparser.statement.ResetStatement;
import net.sf.jsqlparser.statement.RollbackStatement;
import net.sf.jsqlparser.statement.SavepointStatement;
import net.sf.jsqlparser.statement.SetStatement;
import net.sf.jsqlparser.statement.ShowColumnsStatement;
import net.sf.jsqlparser.statement.ShowStatement;
import net.sf.jsqlparser.statement.Statements;
import net.sf.jsqlparser.statement.UnsupportedStatement;
import net.sf.jsqlparser.statement.UseStatement;
import net.sf.jsqlparser.statement.alter.Alter;
import net.sf.jsqlparser.statement.alter.AlterSession;
import net.sf.jsqlparser.statement.alter.AlterSystemStatement;
import net.sf.jsqlparser.statement.alter.RenameTableStatement;
import net.sf.jsqlparser.statement.alter.sequence.AlterSequence;
import net.sf.jsqlparser.statement.analyze.Analyze;
import net.sf.jsqlparser.statement.comment.Comment;
import net.sf.jsqlparser.statement.create.index.CreateIndex;
import net.sf.jsqlparser.statement.create.schema.CreateSchema;
import net.sf.jsqlparser.statement.create.sequence.CreateSequence;
import net.sf.jsqlparser.statement.create.synonym.CreateSynonym;
import net.sf.jsqlparser.statement.create.table.CreateTable;
import net.sf.jsqlparser.statement.create.view.AlterView;
import net.sf.jsqlparser.statement.create.view.CreateView;
import net.sf.jsqlparser.statement.delete.Delete;
import net.sf.jsqlparser.statement.delete.ParenthesedDelete;
import net.sf.jsqlparser.statement.drop.Drop;
import net.sf.jsqlparser.statement.execute.Execute;
import net.sf.jsqlparser.statement.grant.Grant;
import net.sf.jsqlparser.statement.insert.Insert;
import net.sf.jsqlparser.statement.insert.ParenthesedInsert;
import net.sf.jsqlparser.statement.merge.Merge;
import net.sf.jsqlparser.statement.refresh.RefreshMaterializedViewStatement;
import net.sf.jsqlparser.statement.select.Select;
import net.sf.jsqlparser.statement.select.SelectVisitor;
import net.sf.jsqlparser.statement.show.ShowIndexStatement;
import net.sf.jsqlparser.statement.show.ShowTablesStatement;
import net.sf.jsqlparser.statement.truncate.Truncate;
import net.sf.jsqlparser.statement.update.ParenthesedUpdate;
import net.sf.jsqlparser.statement.update.Update;
import net.sf.jsqlparser.statement.upsert.Upsert;
public class StatementVisitor implements net.sf.jsqlparser.statement.StatementVisitor<Void> {
private SqlAccessRestrictor sqlAccessRestrictor;
public StatementVisitor(SqlAccessRestrictor sqlAccessRestrictor) {
this.sqlAccessRestrictor = sqlAccessRestrictor;
}
@Override
public <S> Void visit(Analyze analyze, S context) {
System.out.println("StatementVisitor.Analyze should not be printed ");
return null;
}
@Override
public <S> Void visit(SavepointStatement savepointStatement, S context) {
System.out.println("StatementVisitor.SavepointStatement should not be printed ");
return null;
}
@Override
public <S> Void visit(RollbackStatement rollbackStatement, S context) {
System.out.println("StatementVisitor.RollbackStatement should not be printed ");
return null;
}
@Override
public <S> Void visit(Comment comment, S context) {
System.out.println("StatementVisitor.Comment should not be printed ");
return null;
}
@Override
public <S> Void visit(Commit commit, S context) {
System.out.println("StatementVisitor.Commit should not be printed ");
return null;
}
@Override
public <S> Void visit(Delete delete, S context) {
System.out.println("StatementVisitor.Delete should not be printed ");
return null;
}
@Override
public <S> Void visit(Update update, S context) {
System.out.println("StatementVisitor.Update should not be printed ");
return null;
}
@Override
public <S> Void visit(Insert insert, S context) {
System.out.println("StatementVisitor.Insert should not be printed ");
return null;
}
@Override
public <S> Void visit(Drop drop, S context) {
System.out.println("StatementVisitor.Drop should not be printed ");
return null;
}
@Override
public <S> Void visit(Truncate truncate, S context) {
System.out.println("StatementVisitor.Truncate should not be printed ");
return null;
}
@Override
public <S> Void visit(CreateIndex createIndex, S context) {
System.out.println("StatementVisitor.CreateIndex should not be printed ");
return null;
}
@Override
public <S> Void visit(CreateSchema createSchema, S context) {
System.out.println("StatementVisitor.CreateSchema should not be printed ");
return null;
}
@Override
public <S> Void visit(CreateTable createTable, S context) {
System.out.println("StatementVisitor.CreateTable should not be printed ");
return null;
}
@Override
public <S> Void visit(CreateView createView, S context) {
System.out.println("StatementVisitor.CreateView should not be printed ");
return null;
}
@Override
public <S> Void visit(AlterView alterView, S context) {
System.out.println("StatementVisitor.AlterView should not be printed ");
return null;
}
@Override
public <S> Void visit(RefreshMaterializedViewStatement materializedView, S context) {
System.out.println("StatementVisitor.RefreshMaterializedViewStatement should not be printed ");
return null;
}
@Override
public <S> Void visit(Alter alter, S context) {
System.out.println("StatementVisitor.Alter should not be printed ");
return null;
}
@Override
public <S> Void visit(Statements statements, S context) {
System.out.println("StatementVisitor.Statements should not be printed ");
return null;
}
@Override
public <S> Void visit(Execute execute, S context) {
System.out.println("StatementVisitor.Execute should not be printed ");
return null;
}
@Override
public <S> Void visit(SetStatement set, S context) {
System.out.println("StatementVisitor.SetStatement should not be printed ");
return null;
}
@Override
public <S> Void visit(ResetStatement reset, S context) {
System.out.println("StatementVisitor.ResetStatement should not be printed ");
return null;
}
@Override
public <S> Void visit(ShowColumnsStatement showColumns, S context) {
System.out.println("StatementVisitor.ShowColumnsStatement should not be printed ");
return null;
}
@Override
public <S> Void visit(ShowIndexStatement showIndex, S context) {
System.out.println("StatementVisitor.ShowIndexStatement should not be printed ");
return null;
}
@Override
public <S> Void visit(ShowTablesStatement showTables, S context) {
System.out.println("StatementVisitor.ShowTablesStatement should not be printed ");
return null;
}
@Override
public <S> Void visit(Merge merge, S context) {
System.out.println("StatementVisitor.Merge should not be printed ");
return null;
}
@Override
public <S> Void visit(Select select, S context) {
SelectVisitor<Void> sv = this.sqlAccessRestrictor.getSelectVisitor();
select.accept(sv, null);
return null;
}
@Override
public <S> Void visit(Upsert upsert, S context) {
System.out.println("StatementVisitor.Upsert should not be printed ");
return null;
}
@Override
public <S> Void visit(UseStatement use, S context) {
System.out.println("StatementVisitor.UseStatement should not be printed ");
return null;
}
@Override
public <S> Void visit(Block block, S context) {
System.out.println("StatementVisitor.Block should not be printed ");
return null;
}
@Override
public <S> Void visit(DescribeStatement describe, S context) {
System.out.println("StatementVisitor.DescribeStatement should not be printed ");
return null;
}
@Override
public <S> Void visit(ExplainStatement explainStatement, S context) {
System.out.println("StatementVisitor.ExplainStatement should not be printed ");
return null;
}
@Override
public <S> Void visit(ShowStatement showStatement, S context) {
System.out.println("StatementVisitor.ShowStatement should not be printed ");
return null;
}
@Override
public <S> Void visit(DeclareStatement declareStatement, S context) {
System.out.println("StatementVisitor.DeclareStatement should not be printed ");
return null;
}
@Override
public <S> Void visit(Grant grant, S context) {
System.out.println("StatementVisitor.Grant should not be printed ");
return null;
}
@Override
public <S> Void visit(CreateSequence createSequence, S context) {
System.out.println("StatementVisitor.CreateSequence should not be printed ");
return null;
}
@Override
public <S> Void visit(AlterSequence alterSequence, S context) {
System.out.println("StatementVisitor.AlterSequence should not be printed ");
return null;
}
@Override
public <S> Void visit(CreateFunctionalStatement createFunctionalStatement, S context) {
System.out.println("StatementVisitor.CreateFunctionalStatement should not be printed ");
return null;
}
@Override
public <S> Void visit(CreateSynonym createSynonym, S context) {
System.out.println("StatementVisitor.CreateSynonym should not be printed ");
return null;
}
@Override
public <S> Void visit(AlterSession alterSession, S context) {
System.out.println("StatementVisitor.AlterSession should not be printed ");
return null;
}
@Override
public <S> Void visit(IfElseStatement ifElseStatement, S context) {
System.out.println("StatementVisitor.IfElseStatement should not be printed ");
return null;
}
@Override
public <S> Void visit(RenameTableStatement renameTableStatement, S context) {
System.out.println("StatementVisitor.RenameTableStatement should not be printed ");
return null;
}
@Override
public <S> Void visit(PurgeStatement purgeStatement, S context) {
System.out.println("StatementVisitor.PurgeStatement should not be printed ");
return null;
}
@Override
public <S> Void visit(AlterSystemStatement alterSystemStatement, S context) {
System.out.println("StatementVisitor.AlterSystemStatement should not be printed ");
return null;
}
@Override
public <S> Void visit(UnsupportedStatement unsupportedStatement, S context) {
System.out.println("StatementVisitor.UnsupportedStatement should not be printed ");
return null;
}
@Override
public <S> Void visit(ParenthesedInsert parenthesedInsert, S context) {
System.out.println("StatementVisitor.ParenthesedInsert should not be printed ");
return null;
}
@Override
public <S> Void visit(ParenthesedUpdate parenthesedUpdate, S context) {
System.out.println("StatementVisitor.ParenthesedUpdate should not be printed ");
return null;
}
@Override
public <S> Void visit(ParenthesedDelete parenthesedDelete, S context) {
System.out.println("StatementVisitor.ParenthesedDelete should not be printed ");
return null;
}
}

20
src/de/superx/bianalysis/ColumnElementBuilder.java

@ -50,6 +50,7 @@ public class ColumnElementBuilder {
List<Filter> filters = metadata.filters; List<Filter> filters = metadata.filters;
List<Measure> measures = metadata.measures; List<Measure> measures = metadata.measures;
List<DimensionAttribute> dimensionAttributes = metadata.topDimensionAttributes; List<DimensionAttribute> dimensionAttributes = metadata.topDimensionAttributes;
List<ColumnElement> columnElements = new ArrayList<ColumnElement>(); List<ColumnElement> columnElements = new ArrayList<ColumnElement>();
@ -61,8 +62,7 @@ public class ColumnElementBuilder {
return columnElements; return columnElements;
} }
// for every column there exists an offset of 'maxbridgelvl' if a hierarchy-attribute was selected int colStartPoint = 0;
int colStartPoint = metadata.getHierarchyAttributes().size() * metadata.maxBridgeLvl;
if(dimensionAttributes == null || dimensionAttributes.isEmpty()) { if(dimensionAttributes == null || dimensionAttributes.isEmpty()) {
// edge case 2: no dimension attributes were selected, only display the measures // edge case 2: no dimension attributes were selected, only display the measures
for (Measure measure : measures) { for (Measure measure : measures) {
@ -97,6 +97,22 @@ public class ColumnElementBuilder {
} }
} }
// If there exists at least one null Attribute among the top dimension attributes
// we need to set the measures for all column elements also to null because we
// cannot have measure values in a column for a unknown dimension attribute value
boolean nullTopAttributeExists = false;
for (DimensionAttribute attr : dimensionAttributes) {
if(attr.isNullAttribute()) {
nullTopAttributeExists = true;
}
}
for (ColumnElement element : columnElements) {
if(nullTopAttributeExists) {
element.measure.isNullMeasure = true;
}
}
return columnElements; return columnElements;
} }

6
src/de/superx/bianalysis/ExcelSheetBuilder.java

@ -173,7 +173,7 @@ public class ExcelSheetBuilder {
List<List<String>> gridList = new ArrayList<>(); List<List<String>> gridList = new ArrayList<>();
gridList.add(List.of("Informationen zur BI-Analyse", "")); gridList.add(List.of("Informationen zur BI-Analyse", ""));
gridList.add(List.of("Name:", this.reportName)); gridList.add(List.of("Name:", this.reportName));
gridList.add(List.of("Beschreibung:", this.reportDescription)); gridList.add(List.of("Info zum Attribut:", this.reportDescription));
String sachgebiet = this.result.info.sachgebiete.stream().collect(Collectors.joining(", ")); String sachgebiet = this.result.info.sachgebiete.stream().collect(Collectors.joining(", "));
String theme = getInfoCaptions(this.result.info.facttables); String theme = getInfoCaptions(this.result.info.facttables);
@ -181,6 +181,7 @@ public class ExcelSheetBuilder {
String topAttributes = getInfoCaptions(this.result.info.topDimensionAttributes); String topAttributes = getInfoCaptions(this.result.info.topDimensionAttributes);
String leftAttributes = getInfoCaptions(this.result.info.leftDimensionAttributes); String leftAttributes = getInfoCaptions(this.result.info.leftDimensionAttributes);
String filter = this.result.info.filter.stream().collect(Collectors.joining(", ")); String filter = this.result.info.filter.stream().collect(Collectors.joining(", "));
String secondaryFacttables = this.result.info.secondaryFacttables.stream().collect(Collectors.joining(", "));
String lastUpdateBad = this.result.info.lastUpdateBiad; String lastUpdateBad = this.result.info.lastUpdateBiad;
if(sachgebiet != null) { if(sachgebiet != null) {
@ -201,6 +202,9 @@ public class ExcelSheetBuilder {
if(filter != null) { if(filter != null) {
gridList.add(List.of("Filter:", filter)); gridList.add(List.of("Filter:", filter));
} }
if(secondaryFacttables != null) {
gridList.add(List.of("Verknüfpungen:", secondaryFacttables));
}
if(lastUpdateBad != null) { if(lastUpdateBad != null) {
gridList.add(List.of("Letztes Update von BI-Analyse-Daten:", lastUpdateBad)); gridList.add(List.of("Letztes Update von BI-Analyse-Daten:", lastUpdateBad));
} }

18
src/de/superx/bianalysis/JoinCriteria.java

@ -0,0 +1,18 @@
package de.superx.bianalysis;
import com.fasterxml.jackson.annotation.JsonIgnore;
import de.superx.bianalysis.metadata.Identifier;
import de.superx.bianalysis.models.Dimension;
public class JoinCriteria {
public Identifier leadingRolePlayingDimensionId;
public Identifier secondaryRolePlayingDimensionId;
@JsonIgnore
public Dimension leadingDimension;
@JsonIgnore
public Dimension secondaryDimension;
}

26
src/de/superx/bianalysis/ReportDefinition.java

@ -14,6 +14,7 @@ public class ReportDefinition {
public List<Identifier> topDimensionAttributeIds; public List<Identifier> topDimensionAttributeIds;
public List<Identifier> measureIds; public List<Identifier> measureIds;
public List<Filter> filters; public List<Filter> filters;
public List<SecondaryFacttable> secondaryFacttables;
public boolean hideEmptyColumns; public boolean hideEmptyColumns;
public ReportDefinition() { public ReportDefinition() {
@ -33,6 +34,7 @@ public class ReportDefinition {
this.filters = definition.filters; this.filters = definition.filters;
this.leftDimensionAttributeIds = new ArrayList<>(); this.leftDimensionAttributeIds = new ArrayList<>();
this.hideEmptyColumns = definition.hideEmptyColumns; this.hideEmptyColumns = definition.hideEmptyColumns;
this.secondaryFacttables = definition.secondaryFacttables;
} }
@ -40,18 +42,14 @@ public class ReportDefinition {
ReportMetadata reportMetadata = new ReportMetadata(this, factTableId, dbAdapter); ReportMetadata reportMetadata = new ReportMetadata(this, factTableId, dbAdapter);
return reportMetadata; return reportMetadata;
} }
public static List<Identifier> getAttributesForDefinitions(List<ReportDefinition> definitions){
List<Identifier> ids = new ArrayList<>();
for (ReportDefinition def : definitions) {
for (Identifier id : def.topDimensionAttributeIds) {
ids.add(id);
}
for (Identifier id : def.leftDimensionAttributeIds) {
ids.add(id);
}
}
return ids;
}
} public ReportDefinition toTotalsDefinition() {
// TODO Auto-generated method stub
ReportDefinition def = new ReportDefinition(this);
def.leftDimensionAttributeIds = this.leftDimensionAttributeIds;
def.topDimensionAttributeIds = new ArrayList<>();
return def;
}
}

347
src/de/superx/bianalysis/ReportMetadata.java

@ -1,10 +1,10 @@
package de.superx.bianalysis; package de.superx.bianalysis;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import de.superx.bianalysis.metadata.Identifier; import de.superx.bianalysis.metadata.Identifier;
@ -24,31 +24,23 @@ public class ReportMetadata {
public final List<DimensionAttribute> topDimensionAttributes; public final List<DimensionAttribute> topDimensionAttributes;
public final List<Measure> measures; public final List<Measure> measures;
public final List<Filter> filters; public final List<Filter> filters;
public final List<SecondaryFacttable> secondaryFacttables;
public String lastBiadUpdate; public String lastBiadUpdate;
// only used if hierarchy dimension is present in left dim attributes
public int maxBridgeLvl;
public int minBridgeLvl;
public DbMetaAdapter dbMetaAdapter; public DbMetaAdapter dbMetaAdapter;
public boolean hideEmptyColumns; public boolean hideEmptyColumns;
public boolean isOuter = false; // TODO ugly
public ReportMetadata(ReportDefinition reportDefinition, Identifier factTableId, DbMetaAdapter dbAdapter) { public ReportMetadata(ReportDefinition reportDefinition, Identifier factTableId, DbMetaAdapter dbAdapter) {
this.dbMetaAdapter = dbAdapter; this.dbMetaAdapter = dbAdapter;
this.hideEmptyColumns = reportDefinition.hideEmptyColumns; this.hideEmptyColumns = reportDefinition.hideEmptyColumns;
if(factTableId == null) { // merged Report this.factTable = dbAdapter.getFactTable(factTableId);
this.factTable = new FactTable(); this.sachgebiet = dbAdapter.getSachgebietById(this.factTable.getSachgebiettid());
this.sachgebiet = new Sachgebiet();
} else {
this.factTable = dbAdapter.getFactTable(factTableId);
this.sachgebiet = dbAdapter.getSachgebietById(this.factTable.getSachgebiettid());
}
List<DimensionAttribute> databaseOrderedLeftDimensionAttributes = dbAdapter.getDimensionAttributeMetadata(reportDefinition.leftDimensionAttributeIds, factTableId); List<DimensionAttribute> databaseOrderedLeftDimensionAttributes = dbAdapter.getDimensionAttributeMetadata(reportDefinition.leftDimensionAttributeIds, factTableId);
this.leftDimensionAttributes = reorderDimensionAttributesToReportOrder(databaseOrderedLeftDimensionAttributes, reportDefinition, false); this.leftDimensionAttributes = reorderDimensionAttributesToReportOrder(databaseOrderedLeftDimensionAttributes, reportDefinition, false);
List<DimensionAttribute> databaseOrderedTopDimensionAttributes = dbAdapter.getDimensionAttributeMetadata(reportDefinition.topDimensionAttributeIds, factTableId); List<DimensionAttribute> databaseOrderedTopDimensionAttributes = dbAdapter.getDimensionAttributeMetadata(reportDefinition.topDimensionAttributeIds, factTableId);
//this.topDimensionAttributes = reorderDimensionAttributesToReportOrder(databaseOrderedTopDimensionAttributes, reportDefinition, true);
this.topDimensionAttributes = reorderDimensionAttributesToReportOrder(databaseOrderedTopDimensionAttributes, reportDefinition, true); this.topDimensionAttributes = reorderDimensionAttributesToReportOrder(databaseOrderedTopDimensionAttributes, reportDefinition, true);
List<Measure> databaseOrderedMeasures = dbAdapter.getMeasureMetadata(reportDefinition.measureIds); List<Measure> databaseOrderedMeasures = dbAdapter.getMeasureMetadata(reportDefinition.measureIds);
this.measures = reorderMeasuresToReportOrder(databaseOrderedMeasures, reportDefinition); this.measures = reorderMeasuresToReportOrder(databaseOrderedMeasures, reportDefinition);
@ -58,24 +50,213 @@ public class ReportMetadata {
this.filters = new ArrayList<Filter>(); this.filters = new ArrayList<Filter>();
} }
this.setTopDimensionAttributeValues(dbAdapter, factTableId); this.setTopDimensionAttributeValues(dbAdapter, factTableId);
if(factTableId != null) {
this.setMaxBridgeLvl();
} else {
// for merged report
this.setMaxBridgeLvlForConformed(reportDefinition.factTableIds);
}
this.lastBiadUpdate = dbAdapter.getLastUpdate(440); this.lastBiadUpdate = dbAdapter.getLastUpdate(440);
this.secondaryFacttables = dbAdapter.getSecondaryFactTableMetadata(reportDefinition.secondaryFacttables, reportDefinition.leftDimensionAttributeIds);
// TODO Ugly workaround to add measures to all measures from other facttables
// if there is a outer join facttable we handle this elsewhere
for (SecondaryFacttable sf : secondaryFacttables) {
if(!hasOuter()) {
for (Measure measure : sf.measures) {
this.measures.add(measure);
}
}
}
}
/**
* Determines which dimension attribute a secondary fact table should use.
* Conformed attributes are mapped to the matching role-playing attribute of the
* secondary dimension. If no mapping exists, or if the attribute is not conformed,
* a null/grouping copy of the provided attribute is returned instead.
*/
private DimensionAttribute resolveDimensionAttributeForSecondaryFacttable(DimensionAttribute attr, SecondaryFacttable secondaryFacttable) {
String conformedDimensionId = attr.getDimConformedId();
if(conformedDimensionId == null) {
DimensionAttribute attribute = this.dbMetaAdapter.getDimensionAttributeMetadata(attr.getId());
attribute.setNullAttribute(true);
attribute.setGrouping(true);
return attribute;
}
DimensionAttribute result = null;
for (JoinCriteria joinCriteria : secondaryFacttable.joinCriterias) {
String conformedDimensionIdOfSecondaryDimension = joinCriteria.secondaryDimension.getConformed();
if(conformedDimensionId.equals(conformedDimensionIdOfSecondaryDimension)) {
Identifier conformedAttrId = new Identifier(attr.getAttrConformedId());
Identifier rolePlayingDimId = joinCriteria.secondaryDimension.getId();
Optional<Identifier> rolePlayingAttributeId =
dbMetaAdapter.findRolePlayingAttributeId(conformedAttrId, rolePlayingDimId);
if(rolePlayingAttributeId.isPresent()) {
result = this.dbMetaAdapter.getDimensionAttributeMetadata(rolePlayingAttributeId.get());
result.setGrouping(true);
}
}
}
if(result == null) {
result = this.dbMetaAdapter.getDimensionAttributeMetadata(new Identifier(attr.getId()));
result.setNullAttribute(true);
result.setGrouping(true);
}
return result;
} }
public ReportMetadata(ReportMetadata metadata, List<DimensionAttribute> leftDimensionAttributes) { public HashMap<String, ReportMetadata> buildReportMetadatasForDrillAcross(){
List<Identifier> allMeasures = new ArrayList<>();
for (Measure m : measures) {
allMeasures.add(m.getId());
}
for (SecondaryFacttable sf : secondaryFacttables) {
allMeasures.addAll(sf.measureIds);
}
// all metadata objects
HashMap<String, ReportMetadata> factMetadatas = new HashMap<String, ReportMetadata>();
ReportMetadata primaryReportMetadata = new ReportMetadata(this, this.secondaryFacttables, allMeasures);
factMetadatas.put(factTable.getId().composedId, primaryReportMetadata);
// Every secondary facttable gets its own ReportMetadata
for (SecondaryFacttable secondaryFacttable : secondaryFacttables) {
if(!secondaryFacttable.join.equals("union")) {
continue;
}
List<DimensionAttribute> leftAttributes = new ArrayList<>();
List<DimensionAttribute> rightAttributes = new ArrayList<>();
List<Filter> filterAttributes = new ArrayList<>();
List<Measure> measures2 = dbMetaAdapter.getMeasureMetadata(allMeasures);
for (Measure measure : measures2) {
if(!measure.getFacttableId().equals(secondaryFacttable.factId)) {
measure.isNullMeasure = true;
}
}
boolean isNullAttribute = false;
for (DimensionAttribute attr : leftDimensionAttributes) {
DimensionAttribute rolePlayingAttribute = resolveDimensionAttributeForSecondaryFacttable(attr, secondaryFacttable);
if(isNullAttribute) {
rolePlayingAttribute.setNullAttribute(true);
}
leftAttributes.add(rolePlayingAttribute);
// if first is a null attribute all other automatically become null
// attributes, because no drill down possible
if(rolePlayingAttribute.isNullAttribute()) {
isNullAttribute = true;
}
}
isNullAttribute = false;
for (DimensionAttribute attr : topDimensionAttributes) {
DimensionAttribute rolePlayingAttribute = resolveDimensionAttributeForSecondaryFacttable(attr, secondaryFacttable);
if(isNullAttribute) {
rolePlayingAttribute.setNullAttribute(true);
}
rightAttributes.add(rolePlayingAttribute);
// if first is a null attribute all other automatically become null
// attributes, because no drill down possible
if(rolePlayingAttribute.isNullAttribute()) {
isNullAttribute = true;
}
}
for (Filter f : filters) {
Filter filter = new Filter(f);
DimensionAttribute attr = dbMetaAdapter.getDimensionAttributeMetadataById(filter.dimensionAttributeId);
DimensionAttribute rolePlayingAttribute = resolveDimensionAttributeForSecondaryFacttable(attr, secondaryFacttable);
if(!rolePlayingAttribute.isNullAttribute()) {
filter.dimensionAttributeId = rolePlayingAttribute.getId();
dbMetaAdapter.setFilterMetadata(filter);
filterAttributes.add(filter);
}
}
ReportMetadata secondaryFacttableMetadata = new ReportMetadata(secondaryFacttable.factTable, leftAttributes, rightAttributes, measures2, filterAttributes, dbMetaAdapter);
// TODO all values from all facttables
secondaryFacttableMetadata.setTopDimensionAttributeValues(dbMetaAdapter, secondaryFacttableMetadata.factTable.getId());
secondaryFacttableMetadata.isOuter = isOuter;
factMetadatas.put(secondaryFacttable.factId.composedId, secondaryFacttableMetadata);
}
// set top dimension attribute filter values
for (DimensionAttribute attribute : topDimensionAttributes) {
DimensionAttribute confAttr =
dbMetaAdapter.getDimensionAttributeMetadata(new Identifier(attribute.getAttrConformedId()));
List<String> values
= dbMetaAdapter.getTopDimensionAttributeValuesForFactTables(confAttr, attribute, factTable, this.secondaryFacttables);
for (ReportMetadata metadata : factMetadatas.values()) {
for (DimensionAttribute attr : metadata.topDimensionAttributes) {
if(attr.getAttrConformedId() == null) {
continue;
}
if(attr.getAttrConformedId().equals(attribute.getAttrConformedId())) {
attr.setDimensionAttributeValues(values);
}
}
}
}
return factMetadatas;
}
public ReportMetadata(ReportMetadata metadata, List<SecondaryFacttable> secondary, List<Identifier> measureIds) {
this.dbMetaAdapter = metadata.dbMetaAdapter; this.dbMetaAdapter = metadata.dbMetaAdapter;
this.factTable = metadata.factTable; this.factTable = metadata.factTable;
this.sachgebiet = metadata.sachgebiet; this.sachgebiet = metadata.sachgebiet;
this.topDimensionAttributes = metadata.topDimensionAttributes; this.topDimensionAttributes = metadata.topDimensionAttributes;
this.measures = metadata.measures;
List<SecondaryFacttable> secondaryFacttables = new ArrayList<>();
for (SecondaryFacttable sf : secondary) {
if(!sf.join.equals("union")) {
secondaryFacttables.add(sf);
}
}
this.measures = dbMetaAdapter.getMeasureMetadata(measureIds);
for (Measure measure : this.measures) {
// own facttable OR secondaryFacttable where inner or left join
boolean isLeftOrInnerJoinFactTable = false;
for (SecondaryFacttable sf : secondaryFacttables) {
if(sf.measureIds.contains(measure.getId())) {
isLeftOrInnerJoinFactTable = true;
}
}
if(!isLeftOrInnerJoinFactTable && !measure.getFacttableId().equals(factTable.getId())) {
measure.isNullMeasure = true;
}
}
this.filters = metadata.filters; this.filters = metadata.filters;
this.leftDimensionAttributes = leftDimensionAttributes; this.leftDimensionAttributes = metadata.leftDimensionAttributes;
for (DimensionAttribute attribute : this.leftDimensionAttributes) {
attribute.setGrouping(true);
}
this.hideEmptyColumns = metadata.hideEmptyColumns; this.hideEmptyColumns = metadata.hideEmptyColumns;
this.secondaryFacttables = secondaryFacttables;
} }
public ReportMetadata() { public ReportMetadata() {
@ -85,51 +266,24 @@ public class ReportMetadata {
this.topDimensionAttributes = new ArrayList<>(); this.topDimensionAttributes = new ArrayList<>();
this.measures = new ArrayList<>(); this.measures = new ArrayList<>();
this.filters = new ArrayList<>(); this.filters = new ArrayList<>();
this.secondaryFacttables = new ArrayList<>();
} }
public List<DimensionAttribute> getSortOrderLeftDimensionAttributes(){ public ReportMetadata(FactTable factTable, List<DimensionAttribute> leftDimensionAttributes2, List<DimensionAttribute> topDimensionAttributes, List<Measure> measures2, List<Filter> filterAttributes,
return leftDimensionAttributes.stream().filter(d -> d.getSortOrderColumn() != null).collect(Collectors.toList()); DbMetaAdapter dbAdapter) {
} this.dbMetaAdapter = dbAdapter;
this.factTable = factTable;
private void setMaxBridgeLvl() { this.sachgebiet = new Sachgebiet();
List<DimensionAttribute> attrs = leftDimensionAttributes this.topDimensionAttributes = topDimensionAttributes;
.stream() this.measures = measures2;
.filter(a -> a.isHierarchy() ) this.leftDimensionAttributes = leftDimensionAttributes2;
.collect(Collectors.toList()); this.hideEmptyColumns = false;
if(attrs.size() > 1) { this.filters = filterAttributes;
throw new RuntimeException("NOT YET IMPLEMENTED: There can only be one hierarchy attribute."); this.secondaryFacttables = new ArrayList<>();
}
if(!attrs.isEmpty()) {
this.maxBridgeLvl = dbMetaAdapter.getBridgeMaxLevel(attrs.get(0), this);
this.minBridgeLvl = dbMetaAdapter.getBridgeMinLevel(getHierarchyFilter(), this.maxBridgeLvl, attrs.get(0).getTablename());
}
} }
private void setMaxBridgeLvlForConformed(List<Identifier> factTableIds) { public List<DimensionAttribute> getSortOrderLeftDimensionAttributes(){
List<DimensionAttribute> attrs = leftDimensionAttributes return leftDimensionAttributes.stream().filter(d -> d.getSortOrderColumn() != null).collect(Collectors.toList());
.stream()
.filter(a -> a.isHierarchy())
.collect(Collectors.toList());
if(!attrs.isEmpty()) {
DimensionAttribute attr = attrs.get(0);
int lvl = 0;
for (Identifier fact : factTableIds) {
String name = dbMetaAdapter.getFactTableNameMaxBridgeLvl(fact, attr.getId());
if(name == null || name.isBlank()) {
continue;
}
int value = -1;
Identifier checkedAttr = dbMetaAdapter.checkIfFactTableHasDimensionAttribute(attr.getId(), fact);
if (checkedAttr != null && !checkedAttr.equals(attr.getId())) {
DimensionAttribute rolePlayingAttribute = dbMetaAdapter.getDimensionAttributeMetadataById(checkedAttr);
value = dbMetaAdapter.getBridgeMaxLevel(rolePlayingAttribute, this, name);
}
if (value > lvl) {
lvl = value;
}
}
this.maxBridgeLvl = lvl;
}
} }
private void setTopDimensionAttributeValues(DbMetaAdapter dbAdapter, Identifier factId) { private void setTopDimensionAttributeValues(DbMetaAdapter dbAdapter, Identifier factId) {
@ -234,12 +388,18 @@ public class ReportMetadata {
Map<String, DimensionAttribute> joinTables = new HashMap<String, DimensionAttribute>(); Map<String, DimensionAttribute> joinTables = new HashMap<String, DimensionAttribute>();
for (DimensionAttribute attr : leftDimensionAttributes) { for (DimensionAttribute attr : leftDimensionAttributes) {
if(attr.isNullAttribute()) {
continue;
}
if(!joinTables.containsKey(attr.getDimensionTableAlias())) { if(!joinTables.containsKey(attr.getDimensionTableAlias())) {
joinTables.put(attr.getDimensionTableAlias(), attr); joinTables.put(attr.getDimensionTableAlias(), attr);
} }
} }
for (DimensionAttribute attr : topDimensionAttributes) { for (DimensionAttribute attr : topDimensionAttributes) {
if(attr.isNullAttribute()) {
continue;
}
if(!joinTables.containsKey(attr.getDimensionTableAlias())) { if(!joinTables.containsKey(attr.getDimensionTableAlias())) {
joinTables.put(attr.getDimensionTableAlias(), attr); joinTables.put(attr.getDimensionTableAlias(), attr);
} }
@ -249,6 +409,9 @@ public class ReportMetadata {
for (Filter filter : filters) { for (Filter filter : filters) {
Identifier attrId = filter.dimensionAttributeId; Identifier attrId = filter.dimensionAttributeId;
DimensionAttribute attr = dbMetaAdapter.getDimensionAttributeMetadataById(attrId); DimensionAttribute attr = dbMetaAdapter.getDimensionAttributeMetadataById(attrId);
if(attr.isNullAttribute()) {
continue;
}
if(!joinTables.containsKey(attr.getDimensionTableAlias())) { if(!joinTables.containsKey(attr.getDimensionTableAlias())) {
joinTables.put(attr.getDimensionTableAlias(), attr); joinTables.put(attr.getDimensionTableAlias(), attr);
} }
@ -284,17 +447,6 @@ public class ReportMetadata {
return null; return null;
} }
public List<Filter> getFilterNoHierarchy() {
List<Filter> filterNoBridge = new ArrayList<>();
for (Filter filter : this.filters) {
DimensionAttribute attr = dbMetaAdapter.getDimensionAttributeById(filter.dimensionAttributeId);
if(!attr.isHierarchy()) {
filterNoBridge.add(filter);
}
}
return filterNoBridge;
}
public List<InfoItem> getLeftDimAttrAsInfo() { public List<InfoItem> getLeftDimAttrAsInfo() {
if(leftDimensionAttributes != null && !leftDimensionAttributes.isEmpty()) { if(leftDimensionAttributes != null && !leftDimensionAttributes.isEmpty()) {
return leftDimensionAttributes.stream().map(m-> return leftDimensionAttributes.stream().map(m->
@ -316,25 +468,40 @@ public class ReportMetadata {
return filterList; return filterList;
} }
public List<DimensionAttribute> getHierarchyAttributes() { public List<String> getSacondaryFacttableAsInfo(){
return leftDimensionAttributes ArrayList<String> secondaryFacttableList = new ArrayList<String>();
.stream()
.filter(a -> a.isHierarchy()) for (SecondaryFacttable secondaryFacttable: secondaryFacttables) {
.collect(Collectors.toList()); String label = "";
} if(secondaryFacttable.join.equals("left")) {
label+= "Inklusion ";
public List<Filter> getHierarchyFilter(){ } else if(secondaryFacttable.join.equals("inner")) {
List<Filter> hierarchyFilter = new ArrayList<>(); label+= "Schnittmenge ";
for (Filter filter : this.filters) { } else if(secondaryFacttable.join.equals("union")) {
if(isHierarchyFilter(filter)) { label+= "Vereinigung ";
hierarchyFilter.add(filter); }
} label+= "mit ";
label+=(secondaryFacttable.factTable.getCaption());
label+= " über ";
for( int i = 0; i < secondaryFacttable.joinCriterias.size(); i++) {
label+=(secondaryFacttable.joinCriterias.get(i).secondaryDimension.getCaption());
if(i < secondaryFacttable.joinCriterias.size() -1) {
label+= " und ";
}
}
secondaryFacttableList.add(label);
} }
return hierarchyFilter; return secondaryFacttableList;
} }
public boolean isHierarchyFilter(Filter filter) { public boolean hasOuter() {
return dbMetaAdapter.isAttributeHierarchyBridge(filter.dimensionAttributeId); for (SecondaryFacttable factable : this.secondaryFacttables) {
if(factable.join.equals("union")) {
return true;
}
}
return false;
} }
} }

244
src/de/superx/bianalysis/ResultBuilder.java

@ -64,93 +64,43 @@ public class ResultBuilder {
if (reportMetadata.leftDimensionAttributes != null && !reportMetadata.leftDimensionAttributes.isEmpty()) { if (reportMetadata.leftDimensionAttributes != null && !reportMetadata.leftDimensionAttributes.isEmpty()) {
int aggregationLvl = reportMetadata.leftDimensionAttributes.size() -1; int aggregationLvl = reportMetadata.leftDimensionAttributes.size() -1;
for (DimensionAttribute dimensionAttribute : reportMetadata.leftDimensionAttributes) { for (DimensionAttribute dimensionAttribute : reportMetadata.leftDimensionAttributes) {
if(dimensionAttribute.isHierarchy()) { try {
try {
String prevLbl = ""; String key = dimensionAttribute.getDimensionColumnAlias();
int countLvl = 0; if(dimensionAttribute.isGrouping()) {
aggregationLvl += reportMetadata.maxBridgeLvl - reportMetadata.minBridgeLvl - 1; key = dimensionAttribute.getColumnname();
for (int i = reportMetadata.minBridgeLvl; i < reportMetadata.maxBridgeLvl; i++) {
Object cell = rs.getObject("col" + i);
String curLbl = (String) cell;
if(cell == null) {
// An empty cell means a lower aggregation level because
// of how the GROUP BY ROLLUP works.
aggregationLvl--;
}
if(IGNORE_SELF_LOOPS &&
curLbl != null &&
curLbl != "" &&
curLbl.equals(prevLbl)) {
// If the cell label is equal to the previous cell label
// then this row contains a self loop, meaning the node is
// both its own parent and child. This happens due to the
// GROUP BY ROLLUP part of the sql statement, which groups
// columns in which the same node can appear right next to
// each other in two columns.
continue;
}
String id = dimensionAttribute.getAttrConformedId();
if(id == null) {
id = dimensionAttribute.getStringId();
}
String cellKey = id + " (Ebene " + countLvl + ")";
if(countLvl == 0) {
cellKey = id;
}
if(cell != null && cellKey != null) {
cells.put(cellKey, cell);
row.rowKey += cellKey + cell;
countLvl++;
}
prevLbl = (String) cell;
}
} catch (SQLException e) {
e.printStackTrace();
} }
} else { Object val = rs.getObject(key);
if(val != null) {
cells.put(dimensionAttribute.getStringId(), val);
row.rowKey += dimensionAttribute.getStringId() + val;
} else {
aggregationLvl--;
}
} catch (SQLException e) {
e.printStackTrace();
}
if(dimensionAttribute.getSortOrderColumn() != null) {
try { try {
Object val = rs.getObject(dimensionAttribute.getDimensionColumnAlias()); String key = dimensionAttribute.getDimensionColumnAlias()+"_"+dimensionAttribute.getSortOrderColumn();
if(val != null) { if(dimensionAttribute.isGrouping()) {
String id = dimensionAttribute.getAttrConformedId(); key = dimensionAttribute.getSortOrderColumn();
if(id == null) { }
id = dimensionAttribute.getStringId(); String id = dimensionAttribute.getStringId();
} cells.put(id + "_sorting", rs.getObject(key));
cells.put(id, val);
row.rowKey += id + val;
} else {
aggregationLvl--;
}
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }
if(dimensionAttribute.getSortOrderColumn() != null) {
try {
String id = dimensionAttribute.getAttrConformedId();
if(id == null) {
id = dimensionAttribute.getStringId();
}
cells.put(id + "_sorting", rs.getObject(dimensionAttribute.getDimensionColumnAlias()+"_"+dimensionAttribute.getSortOrderColumn()));
} catch (SQLException e) {
e.printStackTrace();
}
}
} }
} }
try { try {
row.aggregated = aggregationLvl; row.aggregated = aggregationLvl;
if(row.aggregated == -1) { if(row.aggregated == -1) {
int colNum = this.reportMetadata.maxBridgeLvl + this.columnElements.size() - this.reportMetadata.measures.size(); int colNum = this.columnElements.size() - this.reportMetadata.measures.size();
for (Measure measure : reportMetadata.measures) { for (Measure measure : reportMetadata.measures) {
cells.put(getTotalCellHeaderPrefix(reportMetadata) + measure.getId().composedId, rs.getObject("col" + (colNum++))); cells.put(getTotalCellHeaderPrefix(reportMetadata) + measure.getId().composedId, rs.getObject("col" + (colNum++)));
} }
} }
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -174,30 +124,13 @@ public class ResultBuilder {
List<Column> columns = new ArrayList<Column>(); List<Column> columns = new ArrayList<Column>();
if (reportMetadata.leftDimensionAttributes != null) { if (reportMetadata.leftDimensionAttributes != null) {
reportMetadata.leftDimensionAttributes.forEach((dimensionAttribute) -> { reportMetadata.leftDimensionAttributes.forEach((dimensionAttribute) -> {
String id = dimensionAttribute.getAttrConformedId(); String id = dimensionAttribute.getStringId();
if(id == null) { if(dimensionAttribute.getSortOrderColumn() != null) {
id = dimensionAttribute.getStringId(); String columnId = dimensionAttribute.getStringId();
} columns.add(new Column(id, dimensionAttribute.getCaption(), ColumnType.StringColumn, true, columnId + "_sorting", false));
if(dimensionAttribute.isHierarchy()) { columns.add(new Column(columnId + "_sorting", dimensionAttribute.getCaption(), ColumnType.SortOrderColumn, false, dimensionAttribute.getStringId(), true));
int cnt = 0; }else {
for (int i = reportMetadata.minBridgeLvl; i < reportMetadata.maxBridgeLvl - 1; i++) { columns.add(new Column(id, dimensionAttribute.getCaption(), ColumnType.StringColumn, true));
if(cnt == 0) {
columns.add(new Column(id, dimensionAttribute.getCaption(), ColumnType.StringColumn, true));
} else {
String caption = id + " (Ebene " + cnt + ")";
String header = dimensionAttribute.getCaption() + " (Ebene " + (cnt) + ")";
columns.add(new Column(caption, header, ColumnType.HierarchyLevelColumn, true, id, false));
}
cnt += 1;
}
} else {
if(dimensionAttribute.getSortOrderColumn() != null) {
String ref_column_id = dimensionAttribute.getAttrConformedId() != null? dimensionAttribute.getAttrConformedId(): dimensionAttribute.getStringId();
columns.add(new Column(id, dimensionAttribute.getCaption(), ColumnType.StringColumn, true, ref_column_id + "_sorting", false));
columns.add(new Column(ref_column_id + "_sorting", dimensionAttribute.getCaption(), ColumnType.SortOrderColumn, false, dimensionAttribute.getStringId(), true));
}else {
columns.add(new Column(id, dimensionAttribute.getCaption(), ColumnType.StringColumn, true));
}
} }
}); });
} }
@ -232,31 +165,6 @@ public class ResultBuilder {
rows.add(row); rows.add(row);
} }
List<Row> result = new ArrayList<>(); List<Row> result = new ArrayList<>();
if (reportMetadata.getHierarchyAttributes().size() > 0) {
HashMap<String, Row> keys = new HashMap<>();
for (Row row : rows) {
if (keys.containsKey(row.rowKey)) {
Row currentRow = keys.get(row.rowKey );
if (currentRow.aggregated > row.aggregated) {
keys.put(currentRow.rowKey , row);
}
// workaround: fix multiple aggregated rows, take only highest
if(currentRow.aggregated == -1 && row.aggregated == -1) {
for(String cell : currentRow.cells.keySet()) {
Number currentCellVal = (Number) currentRow.cells.get(cell);
Number candidateVal = (Number) row.cells.get(cell);
if(candidateVal.doubleValue() > currentCellVal.doubleValue()) {
keys.put(currentRow.rowKey, row);
}
}
}
} else {
keys.put(row.rowKey, row);
}
}
rows = new ArrayList<Row>(keys.values());
}
for (Row row : rows) { for (Row row : rows) {
if(row != null) { if(row != null) {
result.add(row); result.add(row);
@ -298,7 +206,11 @@ public class ResultBuilder {
ResultBuilder.setTotalColumnToRows(rows, totalColumns); ResultBuilder.setTotalColumnToRows(rows, totalColumns);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
report.info.setErrorMessage("Die Gesamtspalte konnte nicht ermittelt werden."); List<Item> sqlStatementsError = new ArrayList<>();
sqlStatementsError.add(new Item("noAggregatesSQL", sql));
sqlStatementsError.add(new Item("totalsColumnSQL", e.getCause().getMessage()));
report.info.setSqlStatements(sqlStatementsError);
//report.info.setErrorMessage("Die Gesamtspalte konnte nicht ermittelt werden.");
} }
} }
@ -377,6 +289,7 @@ public class ResultBuilder {
report.info.setLeftDimensionAttributes(reportMetadata.getLeftDimAttrAsInfo()); report.info.setLeftDimensionAttributes(reportMetadata.getLeftDimAttrAsInfo());
report.info.setTopDimensionAttributes(reportMetadata.getTopDimAttrAsInfo()); report.info.setTopDimensionAttributes(reportMetadata.getTopDimAttrAsInfo());
report.info.setFilter(reportMetadata.getFilterAsInfo()); report.info.setFilter(reportMetadata.getFilterAsInfo());
report.info.setSecondaryFacttables(reportMetadata.getSacondaryFacttableAsInfo());
report.info.setLastUpdateBiad(reportMetadata.lastBiadUpdate); report.info.setLastUpdateBiad(reportMetadata.lastBiadUpdate);
report.info.hideEmptyColumns(reportMetadata.hideEmptyColumns); report.info.hideEmptyColumns(reportMetadata.hideEmptyColumns);
} }
@ -419,34 +332,20 @@ public class ResultBuilder {
public Row mapRow(ResultSet rs, int rowNum) { public Row mapRow(ResultSet rs, int rowNum) {
Row row = new Row(); Row row = new Row();
Map<String, Object> cells = new TreeMap<String, Object>(); Map<String, Object> cells = new TreeMap<String, Object>();
int numCols = reportMetadata.maxBridgeLvl; int numCols = 0;
try { try {
for (DimensionAttribute attr : reportMetadata.leftDimensionAttributes) { for (DimensionAttribute attr : reportMetadata.leftDimensionAttributes) {
if(attr.isHierarchy()) { String key = attr.getDimensionColumnAlias();
String prevCell = ""; if(attr.isGrouping()) {
for (int i = reportMetadata.minBridgeLvl; i < reportMetadata.maxBridgeLvl; i++) { key = attr.getColumnname();
Object cell = rs.getObject("col" + i);
if(cell == null || cell.equals(prevCell)) {
continue;
}
String cellKey = attr.getStringId() + " (Ebene " + i + ")";
if(i == 0) {
cellKey = attr.getStringId();
}
row.rowKey += cellKey + cell;
prevCell = (String) cell;
}
} else {
Object val = rs.getObject(attr.getDimensionColumnAlias());
if(val != null) {
String id = attr.getAttrConformedId();
if(id == null) {
id = attr.getStringId();
}
cells.put(id, val);
row.rowKey += id + val;
}
} }
Object val = rs.getObject(key);
if(val != null) {
String id = attr.getStringId();
cells.put(id, val);
row.rowKey += id + val;
}
} }
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
@ -460,41 +359,11 @@ public class ResultBuilder {
e.printStackTrace(); e.printStackTrace();
} }
} }
// TODO find better solution
row.cells = cells; row.cells = cells;
return row; return row;
} }
}); });
if(reportMetadata.getHierarchyAttributes().size() > 0) {
HashMap<String, Row> rowKeyValue = new HashMap<>();
for (Row row : rows) {
boolean replace = false;
if(rowKeyValue.containsKey(row.rowKey)) {
Row alreadyThere = rowKeyValue.get(row.rowKey);
for(String key : alreadyThere.cells.keySet()) {
Number candidateVal = (Number) row.cells.get(key);
if(candidateVal == null) {
continue;
}
Number alreadyVal = (Number) alreadyThere.cells.get(key);
if(alreadyVal == null) {
continue;
}
if(candidateVal.doubleValue() > alreadyVal.doubleValue()) {
replace = true;
}
}
if(replace) {
rowKeyValue.put(row.rowKey, row);
replace = false;
}
} else {
rowKeyValue.put(row.rowKey, row);
}
}
return new ArrayList<>(rowKeyValue.values());
}
return rows; return rows;
} }
@ -506,13 +375,6 @@ public class ResultBuilder {
} }
} }
} }
//for (int i = 0; i < rows.size(); i++) {
// Row row = rows.get(i);
// if(row.aggregated == -1) {
// continue;
// }
// row.cells.putAll(result.get(i).cells);
//}
} }
public static void setTotalColumnToColumns(List<Column> columns, ReportMetadata reportMetadata) { public static void setTotalColumnToColumns(List<Column> columns, ReportMetadata reportMetadata) {

158
src/de/superx/bianalysis/ResultMerger.java

@ -1,158 +0,0 @@
package de.superx.bianalysis;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.StringJoiner;
import java.util.stream.Collectors;
import de.superx.bianalysis.metadata.Identifier;
import de.superx.bianalysis.models.DimensionAttribute;
import de.superx.bianalysis.models.FactTable;
import de.superx.bianalysis.models.Filter;
import de.superx.bianalysis.models.InfoItem;
import de.superx.bianalysis.service.DbMetaAdapter;
import de.superx.jdbc.entity.Sachgebiet;
import de.superx.rest.model.Column;
import de.superx.rest.model.Result;
import de.superx.rest.model.Row;
public class ResultMerger {
private DbMetaAdapter dbAdapter;
public ResultMerger(DbMetaAdapter dbAdapter) {
this.dbAdapter = dbAdapter;
}
public Result buildMergedReport(ReportDefinition definition, List<Result> reportResults) {
Result result = new Result();
ReportMetadata metadata = new ReportMetadata(definition, null, dbAdapter);
List<ColumnElement> columnElements = ColumnElementBuilder.buildColumnElements(metadata);
List<Column> columns = ResultBuilder.buildColumns(metadata, columnElements);
if(!metadata.topDimensionAttributes.isEmpty()) {
ResultBuilder.setTotalColumnToColumns(columns, metadata);
}
// create list of merged rows
List<List<Row>> allRows = Result.getRowsFromReports(reportResults);
List<Row> rows = mergeRows(allRows);
if(metadata.hideEmptyColumns) {
ResultBuilder.removeEmptyColumns(columns, rows);
}
ResultBuilder.setAttributesToReport(result, metadata, rows, columns);
// override merge report specific attributes
result.setSubResults(reportResults);
List<InfoItem> factTablesInfo = getFactTablesAsInfo(dbAdapter, definition.factTableIds);
result.info.setSegmentCaption(factTablesInfo.stream().map(f -> f.caption).collect(Collectors.joining(", ")));
result.info.setSachgebiete(getSachgebieteAsInfo(dbAdapter, definition.factTableIds));
result.info.setFacttables(factTablesInfo);
for (Result r : reportResults) {
if(r.info.error != null && !r.info.error.isBlank()) {
result.info.setErrorMessage(r.info.error);
break;
}
}
return result;
}
private static List<String> getSachgebieteAsInfo(DbMetaAdapter dbAdapter, List<Identifier> factTableIds) {
List<String> sachgebiete = new ArrayList<String>();
List<Integer> tids = new ArrayList<>();
for (Identifier id : factTableIds) {
FactTable factTable = dbAdapter.getFactTable(id);
Sachgebiet sachgebiet = dbAdapter.getSachgebietById(factTable.getSachgebiettid());
Integer tid = sachgebiet.tid;
if(!tids.contains(tid)) {
tids.add(tid);
sachgebiete.add(sachgebiet.name.trim());
}
}
return sachgebiete;
}
private static List<InfoItem> getFactTablesAsInfo(DbMetaAdapter dbAdapter, List<Identifier> factTableIds) {
List<InfoItem> facttables = new ArrayList<InfoItem>();
for (Identifier id : factTableIds) {
FactTable factTable = dbAdapter.getFactTable(id);
facttables.add(new InfoItem(factTable.getId().composedId, factTable.getCaption(), factTable.getDescription()));
}
return facttables;
}
public ReportDefinition createFactTableSpecificReportDefinition(ReportDefinition reportDefinition,
Identifier factTableId) {
ReportDefinition definition = new ReportDefinition();
definition.hideEmptyColumns = reportDefinition.hideEmptyColumns;
definition.factTableIds.add(factTableId);
for (int i = 0; i < reportDefinition.leftDimensionAttributeIds.size(); i++) {
Identifier attr = reportDefinition.leftDimensionAttributeIds.get(i);
Identifier checkedAttr = dbAdapter.checkIfFactTableHasDimensionAttribute(attr, factTableId);
if(checkedAttr != null) {
definition.leftDimensionAttributeIds.add(checkedAttr);
}
}
for (int i = 0; i < reportDefinition.topDimensionAttributeIds.size(); i++) {
Identifier attr = reportDefinition.topDimensionAttributeIds.get(i);
Identifier checkedAttr = dbAdapter.checkIfFactTableHasDimensionAttribute(attr, factTableId);
if(checkedAttr != null) {
definition.topDimensionAttributeIds.add(checkedAttr);
}
}
for (int i = 0; i < reportDefinition.measureIds.size(); i++) {
Identifier measure = reportDefinition.measureIds.get(i);
if(dbAdapter.checkIfFactTableHasMeasure(measure, factTableId)) {
definition.measureIds.add(measure);
}
}
for (int i = 0; i < reportDefinition.filters.size(); i++) {
Filter filter = reportDefinition.filters.get(i);
Identifier checkedAttr = dbAdapter.checkIfFactTableHasDimensionAttribute(filter.dimensionAttributeId, factTableId);
if(checkedAttr != null) {
Filter roleFilter = new Filter(filter);
roleFilter.dimensionAttributeId = checkedAttr;
definition.filters.add(roleFilter);
}
}
return definition;
}
public static List<Row> mergeRows(List<List<Row>> rows) {
List<Row> result = new ArrayList<>();
for (List<Row> inputRows : rows) {
for (Row row : inputRows) {
Row rowRepl = new Row(row.aggregated);
rowRepl.rowKey = row.rowKey;
for(String key : row.cells.keySet()){
String newKey = key;
rowRepl.cells.put(newKey, row.cells.get(key));
}
if(!result.contains(rowRepl)) {
result.add(rowRepl);
} else {
// row with the same rowkey exists -> add only cells
Row found = result.get(result.indexOf(rowRepl));
for(String key : rowRepl.cells.keySet()){
if(!found.cells.containsKey(key)) {
found.cells.put(key, rowRepl.cells.get(key));
}
}
}
}
}
return result;
}
}

26
src/de/superx/bianalysis/SecondaryFacttable.java

@ -0,0 +1,26 @@
package de.superx.bianalysis;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnore;
import de.superx.bianalysis.metadata.Identifier;
import de.superx.bianalysis.models.FactTable;
import de.superx.bianalysis.models.Measure;
public class SecondaryFacttable {
public Identifier factId;
public List<JoinCriteria> joinCriterias;
public List<Identifier> measureIds;
public String join;
@JsonIgnore
public FactTable factTable;
@JsonIgnore
public List<Measure> measures;
@JsonIgnore
public List<String> attributesNotInGrain = new ArrayList<>();
}

2
src/de/superx/bianalysis/bin/BiAnalysisCLI.java

@ -565,8 +565,8 @@ public class BiAnalysisCLI {
MetadataImporter metaImporter = new MetadataImporter(); MetadataImporter metaImporter = new MetadataImporter();
metaImporter.setShouldReadYMLDoc(false); metaImporter.setShouldReadYMLDoc(false);
metaImporter.deserializeMetadataFromJsonFiles(files); metaImporter.deserializeMetadataFromJsonFiles(files);
List<Identifier> allIds = metaImporter.getAllIds();
for (MetaJson meta : metaImporter.getMetaJsons()) { for (MetaJson meta : metaImporter.getMetaJsons()) {
List<Identifier> allIds = meta.getIds();
boolean isFileUpdateNecessary = false; boolean isFileUpdateNecessary = false;
for (MetaObject obj : meta.getMetaObjects()) { for (MetaObject obj : meta.getMetaObjects()) {
if(obj.getId() == null && obj.getNamespace() != null) { if(obj.getId() == null && obj.getNamespace() != null) {

123
src/de/superx/bianalysis/jasper/JasperReportJson.java

@ -0,0 +1,123 @@
package de.superx.bianalysis.jasper;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import com.fasterxml.jackson.annotation.JsonProperty;
import de.superx.bianalysis.StoredReport;
import de.superx.jdbc.entity.SxCaptions;
public class JasperReportJson {
@JsonProperty("Berichtsname")
private String name;
@JsonProperty("Berichtsdefinition")
private String description;
@JsonProperty("Sachgebiete")
private String sachgebiete;
@JsonProperty("Kennzahlen")
private String measures;
@JsonProperty("Zeilenattribute")
private String leftDimensionAttributes;
@JsonProperty("Spaltenattribute")
private String topDimensionAttributes;
@JsonProperty("Filter")
private String filter;
@JsonProperty("Datenstand")
private String lastUpdateBiad;
@JsonProperty("REPORT_HEADING_URL")
private String reportHeadingUrl;
@JsonProperty("REPORT_LOGO_FILE")
private String reportLogoFile;
@JsonProperty("REPORT_HEADING_ADDRESS")
private String reportHeadingAddress;
@JsonProperty("REPORT_EMAIL")
private String reportEmail;
@JsonProperty("REPORT_DOCUMENTATION_URL")
private String reportDocumentationUrl;
@JsonProperty("REPORT_HEADING_INSTITUTION")
private String reportHeadingInstitution;
@JsonProperty("Zeilen")
private List<Map<String, Object>> rows = new ArrayList<Map<String, Object>>();
public JasperReportJson() {
super();
}
public JasperReportJson(StoredReport sR, List<SxCaptions> sxReportCaptions) {
this.name = sR.name;
this.description = sR.description;
this.sachgebiete = String.join(", ", sR.exportedResult.info.sachgebiete);
this.measures = String.join(", ", sR.exportedResult.info.measures.stream().map( m -> m.caption).collect(Collectors.toList()));
this.leftDimensionAttributes = String.join(", ", sR.exportedResult.info.leftDimensionAttributes.stream().map( l -> l.caption).collect(Collectors.toList()));
// todo lieber [] als null im JSON zurückgeben für topDimensionAttributes?
this.topDimensionAttributes = String.join(", ", Stream.ofNullable(sR.exportedResult.info.topDimensionAttributes)
.flatMap(List::stream).map( t -> t.caption).collect(Collectors.toList()));
this.filter = String.join(", ", sR.exportedResult.info.filter);
this.lastUpdateBiad = sR.exportedResult.info.lastUpdateBiad;
Map<String, String> idContentMap = new HashMap<>();
for (SxCaptions caption : sxReportCaptions) {
String content_short = caption.contents_short;
if(content_short == null) {
content_short = "";
} else {
content_short = content_short.trim();
}
idContentMap.put(caption.id.trim(), content_short);
}
this.reportHeadingUrl = idContentMap.get("REPORT_HEADING_URL");
this.reportLogoFile = idContentMap.get("REPORT_LOGO_FILE");
this.reportHeadingAddress = idContentMap.get("REPORT_HEADING_ADRESS");
this.reportEmail = idContentMap.get("REPORT_EMAIL");
this.reportDocumentationUrl = idContentMap.get("REPORT_DOCUMENTATION_URL");
this.reportHeadingInstitution = idContentMap.get("REPORT_HEADING_INSTITUTION");
// create a row-map where ids replaced with label
Map<String, String> fieldCaptionMap = sR.exportedResult.columns.stream().collect(Collectors.toMap(c -> c.field, c -> c.header));
int aggragationLevel = sR.exportedResult.rows.stream().mapToInt(r -> r.aggregated ).max().orElse(0);
List<Map<String, Object>> cells = sR.exportedResult.rows.stream()
.filter( r -> r.aggregated == aggragationLevel)
.map( r -> r.cells).collect(Collectors.toList());
for (Map<String, Object> cell : cells) {
Map<String, Object> newRow = new HashMap<>();
for (Map.Entry<String, Object> entry : cell.entrySet()) {
String fieldCaptionWithoutBrackets = fieldCaptionMap.get(entry.getKey())
.replace("[", "_")
.replace("]", "_")
.replace("(", "_")
.replace(")", "_");
newRow.put(fieldCaptionWithoutBrackets, entry.getValue());
}
this.rows.add(newRow);
}
}
public List<Map<String, Object>> getRows() {
return this.rows;
}
}

24
src/de/superx/bianalysis/jasper/JasperReportJsonWrapper.java

@ -0,0 +1,24 @@
package de.superx.bianalysis.jasper;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import de.superx.bianalysis.StoredReport;
import de.superx.jdbc.entity.SxCaptions;
public class JasperReportJsonWrapper {
private JasperReportJson jasperReportJson;
public JasperReportJsonWrapper(StoredReport storedReport, List<SxCaptions> sxReportCaptions) {
this.jasperReportJson = new JasperReportJson(storedReport, sxReportCaptions);
}
@JsonProperty("JasperReportJson")
public JasperReportJson getJasperReportJson() {
return jasperReportJson;
}
}

4
src/de/superx/bianalysis/metadata/MetaImport.java

@ -20,7 +20,7 @@ import de.superx.bianalysis.metadata.models.json.MetaObject;
public class MetaImport extends MetaJson { public class MetaImport extends MetaJson {
public List<MetaFact> facts; public List<MetaFact> facts = new ArrayList<>();
private static Logger log = Logger.getLogger(MetaImport.class); private static Logger log = Logger.getLogger(MetaImport.class);
@ -28,7 +28,7 @@ public class MetaImport extends MetaJson {
private Map<String, MetaDimensionAttribute> keysForMeasureFilter = new HashMap<>(); private Map<String, MetaDimensionAttribute> keysForMeasureFilter = new HashMap<>();
@JsonIgnore @JsonIgnore
public List<MetaDimension> conformedDimensions; public List<MetaDimension> conformedDimensions = new ArrayList<>();
@JsonIgnore @JsonIgnore
public void setConformedDimensions(List<MetaDimension> conformedDimensions){ public void setConformedDimensions(List<MetaDimension> conformedDimensions){

5
src/de/superx/bianalysis/metadata/MetaImportConformedDimensions.java

@ -14,6 +14,11 @@ public class MetaImportConformedDimensions extends MetaJson {
@JsonProperty("conformed_dimensions") @JsonProperty("conformed_dimensions")
public List<MetaDimension> conformedDimensions; public List<MetaDimension> conformedDimensions;
public MetaImportConformedDimensions() {
conformedDimensions = new ArrayList<>();
}
@Override @Override
public void init() { public void init() {

76
src/de/superx/bianalysis/metadata/MetadataImporter.java

@ -37,6 +37,7 @@ import de.superx.bianalysis.metadata.models.json.MetaObject;
import de.superx.bianalysis.metadata.models.yml.MetaYml; import de.superx.bianalysis.metadata.models.yml.MetaYml;
import de.superx.bianalysis.metadata.models.yml.MetaYmlModel; import de.superx.bianalysis.metadata.models.yml.MetaYmlModel;
import de.superx.bianalysis.metadata.models.yml.MetaYmlModelColumns; import de.superx.bianalysis.metadata.models.yml.MetaYmlModelColumns;
import de.superx.bianalysis.service.DbMetaAdapter;
import de.superx.util.PathAndFileUtils; import de.superx.util.PathAndFileUtils;
/** /**
@ -74,11 +75,11 @@ public final class MetadataImporter {
* SQL String for deleting from all metadata tables except 'custom' releases. * SQL String for deleting from all metadata tables except 'custom' releases.
*/ */
public static final String TRUNCATE_METADATA_SQL = public static final String TRUNCATE_METADATA_SQL =
"DELETE FROM metadata.facttable WHERE default_release != 'custom' or default_release is null; " + "DELETE FROM metadata.facttable WHERE is_custom = false; " +
"DELETE FROM metadata.measure WHERE default_release != 'custom' or default_release is null; " + "DELETE FROM metadata.measure WHERE is_custom = false; " +
"DELETE FROM metadata.measure_filter WHERE default_release != 'custom' or default_release is null; " + "DELETE FROM metadata.measure_filter WHERE is_custom = false; " +
"DELETE FROM metadata.dimension WHERE default_release != 'custom' or default_release is null; " + "DELETE FROM metadata.dimension WHERE is_custom = false; " +
"DELETE FROM metadata.dimension_attribute WHERE default_release != 'custom' or default_release is null; "; "DELETE FROM metadata.dimension_attribute WHERE is_custom = false; ";
private static Logger log = Logger.getLogger(MetadataImporter.class); private static Logger log = Logger.getLogger(MetadataImporter.class);
@ -441,24 +442,27 @@ public final class MetadataImporter {
// execute sql in "attributes_sql" in metadata files to build the attributes // execute sql in "attributes_sql" in metadata files to build the attributes
// dynamically // dynamically
List<Identifier> ids = getAllIds();
List<MetaDimensionAttribute> generatedAttributes = new ArrayList<>();
List<MetaDimensionAttribute> co = new ArrayList<>();
for (MetaJson i : this.metaImports) { for (MetaJson i : this.metaImports) {
for (MetaObject obj : i.getMetaObjects()) { for (MetaObject obj : i.getMetaObjects()) {
if (!(obj instanceof MetaDimension)) continue; if (!(obj instanceof MetaDimension)) continue;
MetaDimension dim = (MetaDimension) obj; MetaDimension dim = (MetaDimension) obj;
if (dim.getAttributesSql() == null) continue;
String attributesSql = "";
String sqlDone = ""; if (dim.getAttributesSql() != null && !dim.getAttributesSql().isEmpty()) {
String sql = "select param_val from unload_params where param_id = '" + dim.getAttributesSql() + "';"; attributesSql = dim.getAttributesSql();
try (Statement stAttr = con.createStatement(); ResultSet rs = stAttr.executeQuery(sql)) { } else if((dim.getRefTo() != null && dim.getConformedDimension().getAttributesSql() != null)) {
if(rs.next()) { attributesSql = dim.getConformedDimension().getAttributesSql();
sqlDone = rs.getString("param_val"); } else {
}
}
if(sqlDone.isEmpty()) {
continue; continue;
} }
try (Statement stAttr = con.createStatement(); ResultSet rs = stAttr.executeQuery(sqlDone)) {
try (Statement stAttr = con.createStatement(); ResultSet rs = stAttr.executeQuery(attributesSql)) {
int numAttributes = 0; int numAttributes = 0;
while (rs.next()) { while (rs.next()) {
@ -466,23 +470,42 @@ public final class MetadataImporter {
attribute.setDimension(dim); attribute.setDimension(dim);
attribute.setCaption(rs.getString("caption")); attribute.setCaption(rs.getString("caption"));
attribute.setDimColumn(rs.getString("dim_column")); attribute.setDimColumn(rs.getString("dim_column"));
attribute.setDefaultRelease(DbMetaAdapter.getCustomDefaultReleaseForCurrentDate());
// create a new 'on the fly' identifier for the new metadata // create a new 'on the fly' identifier for the new metadata
// attribute // attribute
Identifier id = Identifier.getNewIdentifierValue(i.getIds(), dim.getNamespace()); Identifier id = Identifier.getNewIdentifierValue(ids, dim.getNamespace());
ids.add(id);
Integer val = Integer.valueOf(id.value.intValue() + numAttributes); Integer val = Integer.valueOf(id.value.intValue() + numAttributes);
attribute.setId(new Identifier(dim.getNamespace() + ":" +val)); attribute.setId(new Identifier(dim.getNamespace() + ":" +val));
attribute.setNamespace(id.namespace);
numAttributes++; numAttributes++;
String stmt = attribute.getUpsertBuilder().build(true); generatedAttributes.add(attribute);
try (Statement stUpsert = con.createStatement()) {
stUpsert.execute(stmt); if(attribute.getDimension().getConformedDimension() == null) {
co.add(attribute);
} }
} }
} }
} }
} }
// TODO figure out better solution for orgunits
for (MetaDimensionAttribute metaDimensionAttribute : generatedAttributes) {
if(metaDimensionAttribute.getDimension().getConformedDimension() != null) {
for (MetaDimensionAttribute confA : co) {
if(confA.getDimColumn().equals(metaDimensionAttribute.getDimColumn())) {
metaDimensionAttribute.setConfDimAttrRef(confA);
}
}
}
String stmt = metaDimensionAttribute.getUpsertBuilder().build(true);
try (Statement stUpsert = con.createStatement()) {
stUpsert.execute(stmt);
}
}
} }
} }
@ -631,5 +654,12 @@ public final class MetadataImporter {
this.shouldReadYMLDoc = shouldReadYMLDoc; this.shouldReadYMLDoc = shouldReadYMLDoc;
} }
public List<Identifier> getAllIds() {
return metaImports.stream()
.map(meta -> meta.getIds())
.flatMap(List::stream)
.collect(Collectors.toList());
}
} }

67
src/de/superx/bianalysis/metadata/models/json/MetaDimension.java

@ -22,11 +22,10 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder;
"caption", "caption",
"description", "description",
"dimension", "dimension",
"is_restricted",
"is_historical", "is_historical",
"fact_column", "fact_column",
"view",
"alias", "alias",
"is_hierarchy",
"id_column", "id_column",
"attributes" "attributes"
}) })
@ -38,15 +37,14 @@ public class MetaDimension extends MetaObject {
@JsonProperty("fact_column") @JsonProperty("fact_column")
private String factColumn; private String factColumn;
private String alias; private String alias;
private String view;
@JsonProperty("id_column") @JsonProperty("id_column")
private String idColumn; private String idColumn;
private List<MetaDimensionAttribute> attributes; private List<MetaDimensionAttribute> attributes;
@JsonProperty("is_hierarchy")
private boolean isHierarchy;
@JsonProperty("is_historical") @JsonProperty("is_historical")
private boolean isHistorical; private boolean isHistorical;
@JsonProperty("is_restricted")
private boolean isRestricted;
@JsonProperty("is_hidden") @JsonProperty("is_hidden")
private boolean isHidden; private boolean isHidden;
@ -86,8 +84,8 @@ public class MetaDimension extends MetaObject {
.withIdCol("facttable_id", factId) .withIdCol("facttable_id", factId)
.withStringCol("joincolumn", this.factColumn) .withStringCol("joincolumn", this.factColumn)
.withStringCol("alias", this.alias) .withStringCol("alias", this.alias)
.withStringCol("is_hierarchy", String.valueOf(this.isHierarchy))
.withStringCol("is_historical", String.valueOf(this.isHistorical)) .withStringCol("is_historical", String.valueOf(this.isHistorical))
.withStringCol("is_restricted", String.valueOf(this.isRestricted))
.withStringCol("tablename", this.dimension) .withStringCol("tablename", this.dimension)
.withStringCol("id_column", this.idColumn) .withStringCol("id_column", this.idColumn)
.withIntCol("position", this.position) .withIntCol("position", this.position)
@ -124,7 +122,7 @@ public class MetaDimension extends MetaObject {
builder = builder.withStringCol("joincolumn", this.conformedDimension.getFactColumn()); builder = builder.withStringCol("joincolumn", this.conformedDimension.getFactColumn());
} }
if(this.alias != null && !this.factColumn.isBlank()) { if(this.alias != null && !this.alias.isBlank()) {
builder = builder.withStringCol("alias", this.alias); builder = builder.withStringCol("alias", this.alias);
} else { } else {
builder = builder.withStringCol("alias", this.conformedDimension.getAlias()); builder = builder.withStringCol("alias", this.conformedDimension.getAlias());
@ -136,29 +134,25 @@ public class MetaDimension extends MetaObject {
builder = builder.withStringCol("is_hidden", String.valueOf(this.conformedDimension.isHidden)); builder = builder.withStringCol("is_hidden", String.valueOf(this.conformedDimension.isHidden));
} }
if(this.isHierarchy) {
builder = builder.withStringCol("is_hierarchy", String.valueOf(isHierarchy));
} else {
builder = builder.withStringCol("is_hierarchy", String.valueOf(conformedDimension.isHierarchy));
}
if(this.isHistorical) { if(this.isHistorical) {
builder = builder.withStringCol("is_historical", String.valueOf(isHistorical)); builder = builder.withStringCol("is_historical", String.valueOf(isHistorical));
} else { } else {
builder = builder.withStringCol("is_historical", String.valueOf(conformedDimension.isHistorical)); builder = builder.withStringCol("is_historical", String.valueOf(conformedDimension.isHistorical));
} }
if(this.conformedDimension.getDimension() != null && !this.conformedDimension.getDimension().isBlank()) { if(this.isRestricted) {
builder = builder.withStringCol("is_restricted", String.valueOf(isRestricted));
if(view != null && !view.isBlank()) { } else {
builder = builder.withStringCol("tablename", this.view); builder = builder.withStringCol("is_restricted", String.valueOf(conformedDimension.isRestricted));
} else { }
builder = builder.withStringCol("tablename", this.conformedDimension.getDimension());
} if(this.dimension != null && !this.dimension.isBlank()) {
} else {
builder = builder.withStringCol("tablename", this.dimension); builder = builder.withStringCol("tablename", this.dimension);
} else {
builder = builder.withStringCol("tablename", this.conformedDimension.getDimension());
} }
builder = builder.withIdCol("conformed", this.conformedDimension.id); builder = builder.withIdCol("conformed", this.conformedDimension.id);
} }
@ -266,16 +260,6 @@ public class MetaDimension extends MetaObject {
return this.dimension; return this.dimension;
} }
@JsonIgnore
public boolean isHierarchy() {
return isHierarchy;
}
@JsonIgnore
public void setHierarchy(boolean isHierarchy) {
this.isHierarchy = isHierarchy;
}
@JsonIgnore @JsonIgnore
public boolean isHistorical() { public boolean isHistorical() {
return isHistorical; return isHistorical;
@ -286,14 +270,6 @@ public class MetaDimension extends MetaObject {
this.isHistorical = isHistorical; this.isHistorical = isHistorical;
} }
public String getView() {
return view;
}
public void setView(String view) {
this.view = view;
}
public String getIdColumn() { public String getIdColumn() {
return idColumn; return idColumn;
} }
@ -302,10 +278,12 @@ public class MetaDimension extends MetaObject {
this.idColumn = idColumn; this.idColumn = idColumn;
} }
@JsonIgnore
public String getAttributesSql() { public String getAttributesSql() {
return attributesSql; return attributesSql;
} }
@JsonIgnore
public void setAttributesSql(String attributesSql) { public void setAttributesSql(String attributesSql) {
this.attributesSql = attributesSql; this.attributesSql = attributesSql;
} }
@ -320,5 +298,14 @@ public class MetaDimension extends MetaObject {
this.isHidden = isHidden; this.isHidden = isHidden;
} }
@JsonIgnore
public boolean isRestricted() {
return isRestricted;
}
@JsonIgnore
public void setRestricted(boolean isRestricted) {
this.isRestricted = isRestricted;
}
} }

8
src/de/superx/bianalysis/metadata/models/json/MetaDimensionAttribute.java

@ -125,6 +125,12 @@ public class MetaDimensionAttribute extends MetaObject {
} else { } else {
builder = builder.withStringCol("sort_order_column", confDimAttrRef.getSortOrderColumn()); builder = builder.withStringCol("sort_order_column", confDimAttrRef.getSortOrderColumn());
} }
if(getCriteriaGroups() != null && !getCriteriaGroups().isEmpty()) {
builder = builder.withCriteriaGroup("criteria_groups", this.criteriaGroups);
} else {
builder = builder.withCriteriaGroup("criteria_groups", confDimAttrRef.getCriteriaGroups());
}
builder = builder.withIdCol("dimension_id", this.dimension.id); builder = builder.withIdCol("dimension_id", this.dimension.id);
builder = builder.withIdCol("conformed", this.confDimAttrRef.id); builder = builder.withIdCol("conformed", this.confDimAttrRef.id);
@ -134,7 +140,7 @@ public class MetaDimensionAttribute extends MetaObject {
String newColumnName = this.caption.toLowerCase() String newColumnName = this.caption.toLowerCase()
.replaceAll("\\s+", "_") .replaceAll("\\s+", "_")
.replaceAll("[^a-z0-9-]", "_"); .replaceAll("[^a-z0-9-]", "_");
builder = builder.withStringCol("columnname", newColumnName); builder = builder.withStringCol("columnname", "ind_" + newColumnName);
} }
if(confDimAttrRef != null && confDimAttrRef.hierarchicalFilter) { if(confDimAttrRef != null && confDimAttrRef.hierarchicalFilter) {

4
src/de/superx/bianalysis/models/CriteriaGroup.java

@ -1,11 +1,15 @@
package de.superx.bianalysis.models; package de.superx.bianalysis.models;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
@JsonInclude(Include.NON_DEFAULT)
public class CriteriaGroup { public class CriteriaGroup {
public String caption; public String caption;

40
src/de/superx/bianalysis/models/Dimension.java

@ -3,6 +3,9 @@ package de.superx.bianalysis.models;
import java.util.List; import java.util.List;
import org.springframework.data.annotation.Transient; import org.springframework.data.annotation.Transient;
import com.fasterxml.jackson.annotation.JsonIgnore;
import de.superx.bianalysis.metadata.Identifier; import de.superx.bianalysis.metadata.Identifier;
import de.superx.bianalysis.repository.dto.DimensionDto; import de.superx.bianalysis.repository.dto.DimensionDto;
@ -11,21 +14,22 @@ public class Dimension {
private DimensionDto dimensionDto; private DimensionDto dimensionDto;
@Transient @Transient
public String conformedCaption; public List<DimensionAttribute> dimensionAttributes;
@Transient
public String conformedDescription;
@Transient @Transient
public List<DimensionAttribute> dimensionAttributes; public List<DimensionDto> rolePlayingDimensions;
public Dimension() {}
public Dimension(DimensionDto dimDto) { public Dimension(DimensionDto dimDto) {
this.setDimensionDto(dimDto); this.setDimensionDto(dimDto);
} }
public void setDimensionAttributes(List<DimensionAttribute> lda) { public void setDimensionAttributes(List<DimensionAttribute> lda) {
for (DimensionAttribute dimensionAttribute : lda) { if(lda != null) {
dimensionAttribute.setDimensionColumnAlias(dimensionAttribute.getColumnname() + "_" + getId().value); for (DimensionAttribute dimensionAttribute : lda) {
dimensionAttribute.setDimensionColumnAlias(dimensionAttribute.getColumnname() + "_" + getId().value);
}
} }
this.dimensionAttributes = lda; this.dimensionAttributes = lda;
} }
@ -65,6 +69,10 @@ public class Dimension {
return this.dimensionDto.tablename; return this.dimensionDto.tablename;
} }
public String getDefaultRelease() {
return this.dimensionDto.defaultRelease;
}
public String getJoincolumn() { public String getJoincolumn() {
return this.dimensionDto.joincolumn; return this.dimensionDto.joincolumn;
} }
@ -77,11 +85,14 @@ public class Dimension {
return this.dimensionDto.description; return this.dimensionDto.description;
} }
public boolean isHierarchy() { public List<DimensionDto> getRolePlayingDimensions() {
if(this.dimensionDto.isHierarchy == null) return false; return this.rolePlayingDimensions;
return this.dimensionDto.isHierarchy.booleanValue();
} }
public void setRolePlayingDimensions(List<DimensionDto> dtos) {
this.rolePlayingDimensions = dtos;
}
public boolean isHistorical() { public boolean isHistorical() {
if(this.dimensionDto.isHistorical == null) return false; if(this.dimensionDto.isHistorical == null) return false;
return this.dimensionDto.isHistorical.booleanValue(); return this.dimensionDto.isHistorical.booleanValue();
@ -99,4 +110,11 @@ public class Dimension {
return this.dimensionDto.position; return this.dimensionDto.position;
} }
public boolean isRestricted() {
if(this.dimensionDto.isRestricted == null) return false;
return this.dimensionDto.isRestricted.booleanValue();
}
} }

64
src/de/superx/bianalysis/models/DimensionAttribute.java

@ -5,7 +5,6 @@ import java.util.List;
import java.util.Objects; import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ArrayNode;
import de.superx.bianalysis.metadata.Identifier; import de.superx.bianalysis.metadata.Identifier;
@ -33,11 +32,6 @@ public class DimensionAttribute {
return "'" + result + "'"; return "'" + result + "'";
} }
private String conformedCaption;
private String conformedDescription;
@JsonIgnore @JsonIgnore
private AttributeDto attributeTable; private AttributeDto attributeTable;
@ -56,8 +50,6 @@ public class DimensionAttribute {
@JsonIgnore @JsonIgnore
private String joincolumn; private String joincolumn;
private boolean isHierarchy;
@JsonIgnore @JsonIgnore
private boolean isHistorical; private boolean isHistorical;
@ -74,6 +66,12 @@ public class DimensionAttribute {
@JsonIgnore @JsonIgnore
private String dimIdJoinColumn; private String dimIdJoinColumn;
@JsonIgnore
private boolean isGrouping = false;
@JsonIgnore
private boolean isNullAttribute = false;
public DimensionAttribute() { public DimensionAttribute() {
super(); super();
} }
@ -87,7 +85,6 @@ public class DimensionAttribute {
this.dimId = dim.getId().composedId; this.dimId = dim.getId().composedId;
this.tablename = dim.getTablename(); this.tablename = dim.getTablename();
this.joincolumn = dim.getJoincolumn(); this.joincolumn = dim.getJoincolumn();
this.isHierarchy = dim.isHierarchy();
this.isHistorical = dim.isHistorical(); this.isHistorical = dim.isHistorical();
this.dimIdJoinColumn = dim.getIdColumn(); this.dimIdJoinColumn = dim.getIdColumn();
if(dim.getAlias() != null){ if(dim.getAlias() != null){
@ -129,6 +126,10 @@ public class DimensionAttribute {
} }
return this.attributeTable.isHidden.booleanValue(); return this.attributeTable.isHidden.booleanValue();
} }
public boolean isCustom() {
return this.attributeTable.isCustom != null && this.attributeTable.isCustom.booleanValue();
}
public String getColumnname() { public String getColumnname() {
return this.attributeTable.columnname; return this.attributeTable.columnname;
@ -195,22 +196,6 @@ public class DimensionAttribute {
this.dimensionColumnAlias = dimensionColumnAlias; this.dimensionColumnAlias = dimensionColumnAlias;
} }
public String getConformedCaption() {
return conformedCaption;
}
public void setConformedCaption(String conformedCaption) {
this.conformedCaption = conformedCaption;
}
public String getConformedDescription() {
return conformedDescription;
}
public void setConformedDescription(String conformedDescription) {
this.conformedDescription = conformedDescription;
}
public String getDescription() { public String getDescription() {
return this.attributeTable.description; return this.attributeTable.description;
} }
@ -235,19 +220,10 @@ public class DimensionAttribute {
this.joincolumn = joincolumn; this.joincolumn = joincolumn;
} }
@JsonProperty(value="isHierarchy")
public boolean isHierarchy() {
return isHierarchy;
}
public boolean isHistorical() { public boolean isHistorical() {
return isHistorical; return isHistorical;
} }
public void setHierarchy(boolean isHierarchy) {
this.isHierarchy = isHierarchy;
}
public void setHistorical(boolean isHistorical) { public void setHistorical(boolean isHistorical) {
this.isHistorical = isHistorical; this.isHistorical = isHistorical;
} }
@ -295,4 +271,24 @@ public class DimensionAttribute {
this.criteriaGroups = criteriaGroups; this.criteriaGroups = criteriaGroups;
} }
@JsonIgnore
public boolean isGrouping() {
return isGrouping;
}
@JsonIgnore
public void setGrouping(boolean isGrouping) {
this.isGrouping = isGrouping;
}
@JsonIgnore
public boolean isNullAttribute() {
return isNullAttribute;
}
@JsonIgnore
public void setNullAttribute(boolean isNullAttribute) {
this.isNullAttribute = isNullAttribute;
}
} }

27
src/de/superx/bianalysis/models/FactTable.java

@ -20,9 +20,6 @@ public class FactTable {
@Transient @Transient
private Sachgebiet sachgebiet; private Sachgebiet sachgebiet;
@Transient
private List<Dimension> conformedDimensions;
public FactTable() {} public FactTable() {}
public FactTable(FactDto factDto) { public FactTable(FactDto factDto) {
@ -52,14 +49,6 @@ public class FactTable {
return this.factDto.tablename; return this.factDto.tablename;
} }
public List<Dimension> getConformedDimensions() {
return conformedDimensions;
}
public void setConformedDimensions(List<Dimension> conformedDimensions) {
this.conformedDimensions = conformedDimensions;
}
public Sachgebiet getSachgebiet() { public Sachgebiet getSachgebiet() {
return sachgebiet; return sachgebiet;
} }
@ -67,5 +56,21 @@ public class FactTable {
public void setSachgebiet(Sachgebiet sachgebiet) { public void setSachgebiet(Sachgebiet sachgebiet) {
this.sachgebiet = sachgebiet; this.sachgebiet = sachgebiet;
} }
public FactDto getFactDto() {
return factDto;
}
public void setFactDto(FactDto factDto) {
this.factDto = factDto;
}
public String getDefaultRelease() {
return this.factDto.defaultRelease;
}
public Boolean isCustom() {
return this.factDto.isCustom;
}
} }

5
src/de/superx/bianalysis/models/Filter.java

@ -1,5 +1,6 @@
package de.superx.bianalysis.models; package de.superx.bianalysis.models;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.StringJoiner; import java.util.StringJoiner;
@ -27,8 +28,8 @@ public class Filter {
} }
public Filter(Filter filter) { public Filter(Filter filter) {
this.dimensionAttributeId = filter.dimensionAttributeId; this.dimensionAttributeId = new Identifier(filter.dimensionAttributeId);
this.filterValues = filter.filterValues; this.filterValues = new ArrayList<>(filter.filterValues);
this.columnname = filter.columnname; this.columnname = filter.columnname;
this.tablename = filter.tablename; this.tablename = filter.tablename;
this.joincolumn = filter.joincolumn; this.joincolumn = filter.joincolumn;

5
src/de/superx/bianalysis/models/Info.java

@ -17,6 +17,7 @@ public class Info {
public List<InfoItem> leftDimensionAttributes = new ArrayList<InfoItem>(); public List<InfoItem> leftDimensionAttributes = new ArrayList<InfoItem>();
public List<InfoItem> topDimensionAttributes = new ArrayList<InfoItem>(); public List<InfoItem> topDimensionAttributes = new ArrayList<InfoItem>();
public List<String> filter = new ArrayList<String>(); public List<String> filter = new ArrayList<String>();
public List<String> secondaryFacttables = new ArrayList<String>();
public String hideEmptyColumns; public String hideEmptyColumns;
public List<Item> sqlStatements = new ArrayList<Item>(); public List<Item> sqlStatements = new ArrayList<Item>();
@ -55,6 +56,10 @@ public class Info {
public void setFilter(List<String> filter) { public void setFilter(List<String> filter) {
this.filter = filter; this.filter = filter;
} }
public void setSecondaryFacttables(List<String> secondaryFacttables) {
this.secondaryFacttables = secondaryFacttables;
}
public void setSqlStatements(List<Item> sqlStatements) { public void setSqlStatements(List<Item> sqlStatements) {
this.sqlStatements = sqlStatements; this.sqlStatements = sqlStatements;

30
src/de/superx/bianalysis/models/Measure.java

@ -1,5 +1,8 @@
package de.superx.bianalysis.models; package de.superx.bianalysis.models;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import de.superx.bianalysis.metadata.Identifier; import de.superx.bianalysis.metadata.Identifier;
@ -38,6 +41,15 @@ public class Measure {
@JsonIgnore @JsonIgnore
public Identifier filterAttributeId; public Identifier filterAttributeId;
@JsonIgnore
public String factTableName;
@JsonIgnore
public List<String> attributesNotInGrain = new ArrayList<>();
@JsonIgnore
public boolean isNullMeasure = false;
public Measure() { public Measure() {
super(); super();
} }
@ -45,7 +57,7 @@ public class Measure {
public Measure(MeasureDto measureDTO) { public Measure(MeasureDto measureDTO) {
this.measureDto = measureDTO; this.measureDto = measureDTO;
} }
public void setMeasureFilterAttributes(MeasureFilterDto filter, DimensionAttribute attribute, Dimension dimension) { public void setMeasureFilterAttributes(MeasureFilterDto filter, DimensionAttribute attribute, Dimension dimension) {
this.filterInclude = filter.includedValues; this.filterInclude = filter.includedValues;
this.filterExclude = filter.excludedValues; this.filterExclude = filter.excludedValues;
@ -114,6 +126,14 @@ public class Measure {
return this.measureDto.description; return this.measureDto.description;
} }
public String getDefaultRelease() {
return this.measureDto.defaultRelease;
}
public Identifier getFacttableId() {
return this.measureDto.factTableId;
}
public String getAggregationType() { public String getAggregationType() {
return this.measureDto.aggregationType; return this.measureDto.aggregationType;
} }
@ -126,5 +146,13 @@ public class Measure {
return this.measureDto.measureFilterId; return this.measureDto.measureFilterId;
} }
public MeasureDto getMeasureDto() {
return measureDto;
}
public void setMeasureDto(MeasureDto measureDto) {
this.measureDto = measureDto;
}
} }

5
src/de/superx/bianalysis/models/Right.java

@ -3,8 +3,9 @@ package de.superx.bianalysis.models;
public enum Right { public enum Right {
VIEW_REPORT("RIGHT_CS_BIA_ANALYSIS_VIEW_ANALYSIS_TABLE"), VIEW_REPORT("RIGHT_CS_BIA_ANALYSIS_VIEW_ANALYSIS_TABLE"),
CREATE_ANALYSIS("RIGHT_CS_BIA_ANALYSIS_CREATE_ANALYSIS"); CREATE_ANALYSIS("RIGHT_CS_BIA_ANALYSIS_CREATE_ANALYSIS"),
DELETE_ANALYSIS("RIGHT_CS_BIA_ANALYSIS_DELETE_ANALYSIS");
private String string; private String string;
Right(String string) { Right(String string) {

3
src/de/superx/bianalysis/models/RightParam.java

@ -3,7 +3,8 @@ package de.superx.bianalysis.models;
public enum RightParam { public enum RightParam {
TOPIC_AREA("bianalysis.topic_area"), TOPIC_AREA("bianalysis.topic_area"),
TOPIC("bianalysis.topic"); TOPIC("bianalysis.topic"),
ORGUNIT("bianalysis.orgunit");
private String string; private String string;

14
src/de/superx/bianalysis/repository/DimensionRepository.java

@ -48,6 +48,20 @@ public interface DimensionRepository extends BiaAdminCrudRepository<DimensionDto
+ " AND conformed IS NOT NULL" + " AND conformed IS NOT NULL"
) )
List<Identifier> getUsedConformedDimensionsByFactTable(@Param("factId") String factId); List<Identifier> getUsedConformedDimensionsByFactTable(@Param("factId") String factId);
@Query(
"SELECT DISTINCT tablename FROM ("
+ "SELECT tablename FROM metadata.dimension "
+ "WHERE id = :dimId OR conformed ="
+ " (SELECT conformed FROM metadata.dimension WHERE id = :dimId ) "
+ "UNION "
+ "SELECT tablename FROM metadata.dimension WHERE id ="
+ " (SELECT conformed FROM metadata.dimension WHERE id = :dimId ) "
+ "UNION "
+ "SELECT tablename FROM metadata.dimension WHERE conformed = :dimId "
+ ")"
)
List<String> getAllTableNamesById(@Param("dimId") String dimId);
default DimensionDto findByIdOrThrow(Identifier id) { default DimensionDto findByIdOrThrow(Identifier id) {
return findById(id) return findById(id)

12
src/de/superx/bianalysis/repository/dto/AttributeDto.java

@ -69,14 +69,18 @@ public class AttributeDto extends EntityBase {
@Column(value = "conformed") @Column(value = "conformed")
public String attrConformedId; public String attrConformedId;
@DynamicFieldType(label="Auslieferungsversion", visibleInSimplifiedForm = false) @DynamicFieldType(label="Auslieferungsversion", readOnly = true, visibleInSimplifiedForm = false)
@Column(value = "default_release") @Column(value = "default_release")
public String defaultRelease; public String defaultRelease;
@DynamicFieldType(label="Benutzerdefiniert", columnType = ColumnType.BooleanColumnBiAnalysis, visibleInSimplifiedForm = false)
@Column(value = "is_custom")
public Boolean isCustom;
@DynamicFieldType(label="Position", visibleInSimplifiedForm = false) @DynamicFieldType(label="Position", visibleInSimplifiedForm = false)
public Integer position; public Integer position;
@DynamicFieldType(label="Criteria Groups", editControlType=FieldType.TextArea, readOnly = false, visibleInSimplifiedForm = false) @DynamicFieldType(label="Kriteriengruppen", editControlType=FieldType.TextArea, readOnly = true, visibleInSimplifiedForm = false)
@Column(value = "criteria_groups") @Column(value = "criteria_groups")
public ArrayNode criteriaGroups; public ArrayNode criteriaGroups;
@ -142,8 +146,8 @@ public class AttributeDto extends EntityBase {
public String getColumnNameFromCaption() { public String getColumnNameFromCaption() {
String newColumnName = caption.toLowerCase() String newColumnName = caption.toLowerCase()
.replaceAll("\\s+", "_") .replaceAll("\\s+", "_")
.replaceAll("[^a-z0-9-]", "_"); .replaceAll("[^a-z0-9]", "_");
return newColumnName; return "ind_" + newColumnName;
} }

14
src/de/superx/bianalysis/repository/dto/DimensionDto.java

@ -47,10 +47,6 @@ public class DimensionDto extends EntityBase{
@DynamicFieldType(label="Join-Alias", readOnly = true, visibleInSimplifiedForm = false) @DynamicFieldType(label="Join-Alias", readOnly = true, visibleInSimplifiedForm = false)
public String alias; public String alias;
@DynamicFieldType(label="Hierarchie", editControlType=FieldType.Select, columnType = ColumnType.BooleanColumnBiAnalysis, readOnly = true, visibleInSimplifiedForm = false)
@Column(value = "is_hierarchy")
public Boolean isHierarchy;
@DynamicFieldType(label="Historisch", editControlType=FieldType.Select, columnType = ColumnType.BooleanColumnBiAnalysis, readOnly = true, visibleInSimplifiedForm = false) @DynamicFieldType(label="Historisch", editControlType=FieldType.Select, columnType = ColumnType.BooleanColumnBiAnalysis, readOnly = true, visibleInSimplifiedForm = false)
@Column(value = "is_historical") @Column(value = "is_historical")
public Boolean isHistorical; public Boolean isHistorical;
@ -63,14 +59,22 @@ public class DimensionDto extends EntityBase{
@Column(value = "id_column") @Column(value = "id_column")
public String idColumn; public String idColumn;
@DynamicFieldType(label="Auslieferungsversion", visibleInSimplifiedForm = false) @DynamicFieldType(label="Auslieferungsversion", readOnly = true, visibleInSimplifiedForm = false)
@Column(value = "default_release") @Column(value = "default_release")
public String defaultRelease; public String defaultRelease;
@DynamicFieldType(label="Benutzerdefiniert", columnType = ColumnType.BooleanColumnBiAnalysis, visibleInSimplifiedForm = false)
@Column(value = "is_custom")
public Boolean isCustom;
@DynamicFieldType(label="Ausgeblendet", editControlType=FieldType.Select, columnType = ColumnType.BooleanColumnBiAnalysis, visibleInSimplifiedForm = false) @DynamicFieldType(label="Ausgeblendet", editControlType=FieldType.Select, columnType = ColumnType.BooleanColumnBiAnalysis, visibleInSimplifiedForm = false)
@Column(value = "is_hidden") @Column(value = "is_hidden")
public Boolean isHidden; public Boolean isHidden;
@DynamicFieldType(label="Eingeschränkt", editControlType=FieldType.Select, columnType = ColumnType.BooleanColumnBiAnalysis, visibleInSimplifiedForm = false)
@Column(value = "is_restricted")
public Boolean isRestricted;
@DynamicFieldType(label="Position", visibleInSimplifiedForm = false) @DynamicFieldType(label="Position", visibleInSimplifiedForm = false)
public Integer position; public Integer position;

7
src/de/superx/bianalysis/repository/dto/FactDto.java

@ -15,6 +15,7 @@ import de.superx.jdbc.entity.EntityBase;
import de.superx.jdbc.model.DynamicFieldType; import de.superx.jdbc.model.DynamicFieldType;
import de.superx.jdbc.model.EntityDescriptor; import de.superx.jdbc.model.EntityDescriptor;
import de.superx.jdbc.model.TableRef; import de.superx.jdbc.model.TableRef;
import de.superx.rest.model.ColumnType;
import de.superx.rest.model.FieldType; import de.superx.rest.model.FieldType;
import de.superx.rest.model.Item; import de.superx.rest.model.Item;
@ -39,9 +40,13 @@ public class FactDto extends EntityBase {
@DynamicFieldType(label="Tabellenname", readOnly = true) @DynamicFieldType(label="Tabellenname", readOnly = true)
public String tablename; public String tablename;
@DynamicFieldType(label="Auslieferungsversion", visibleInSimplifiedForm = false) @DynamicFieldType(label="Auslieferungsversion", readOnly = true, visibleInSimplifiedForm = false)
@Column(value = "default_release") @Column(value = "default_release")
public String defaultRelease; public String defaultRelease;
@DynamicFieldType(label="Benutzerdefiniert", columnType = ColumnType.BooleanColumnBiAnalysis, visibleInSimplifiedForm = false)
@Column(value = "is_custom")
public Boolean isCustom;
public FactDto() {} public FactDto() {}

6
src/de/superx/bianalysis/repository/dto/MeasureDto.java

@ -56,10 +56,14 @@ public class MeasureDto extends EntityBase {
@Column(value = "measure_type") @Column(value = "measure_type")
public String measureType; public String measureType;
@DynamicFieldType(label="Auslieferungsversion", visibleInSimplifiedForm = false) @DynamicFieldType(label="Auslieferungsversion", readOnly = true, visibleInSimplifiedForm = false)
@Column(value = "default_release") @Column(value = "default_release")
public String defaultRelease; public String defaultRelease;
@DynamicFieldType(label="Benutzerdefiniert", columnType = ColumnType.BooleanColumnBiAnalysis, visibleInSimplifiedForm = false)
@Column(value = "is_custom")
public Boolean isCustom;
@DynamicFieldType(label="Ausgeblendet", editControlType=FieldType.Select, columnType = ColumnType.BooleanColumnBiAnalysis, visibleInSimplifiedForm = false) @DynamicFieldType(label="Ausgeblendet", editControlType=FieldType.Select, columnType = ColumnType.BooleanColumnBiAnalysis, visibleInSimplifiedForm = false)
@Column(value = "is_hidden") @Column(value = "is_hidden")
public Boolean isHidden; public Boolean isHidden;

5
src/de/superx/bianalysis/repository/dto/MeasureFilterDto.java

@ -16,6 +16,7 @@ import de.superx.bianalysis.service.DbMetaAdapter;
import de.superx.jdbc.entity.EntityBase; import de.superx.jdbc.entity.EntityBase;
import de.superx.jdbc.model.DynamicFieldType; import de.superx.jdbc.model.DynamicFieldType;
import de.superx.jdbc.model.EntityDescriptor; import de.superx.jdbc.model.EntityDescriptor;
import de.superx.rest.model.ColumnType;
import de.superx.rest.model.FieldType; import de.superx.rest.model.FieldType;
import de.superx.rest.model.Item; import de.superx.rest.model.Item;
@ -53,6 +54,10 @@ public class MeasureFilterDto extends EntityBase {
@Column(value = "default_release") @Column(value = "default_release")
public String defaultRelease; public String defaultRelease;
@DynamicFieldType(label="Benutzerdefiniert", columnType = ColumnType.BooleanColumnBiAnalysis, visibleInSimplifiedForm = false)
@Column(value = "is_custom")
public Boolean isCustom;
public MeasureFilterDto() {} public MeasureFilterDto() {}
@Override @Override

32
src/de/superx/bianalysis/rest/BiAnalysisAdminApi.java

@ -75,6 +75,12 @@ public class BiAnalysisAdminApi extends RestControllerBase {
return savedAttribute.id; return savedAttribute.id;
} }
@RequestMapping(method = RequestMethod.PUT, path = "/attribute")
public AttributeDto saveAttribute(@RequestBody final AttributeDto attribute, @RequestParam(value = "dimension_id") Identifier dimensionId) {
attribute.isCustom = Boolean.TRUE;
return dbAdapter.saveAttribute(attribute);
}
@RequestMapping(method = RequestMethod.PUT, path = "/attribute-group/validate") @RequestMapping(method = RequestMethod.PUT, path = "/attribute-group/validate")
public List<String> validateAttributeGroup(@RequestBody final AttributeDto attributeGroup, @RequestParam(value = "dimension_id") Identifier dimensionId) { public List<String> validateAttributeGroup(@RequestBody final AttributeDto attributeGroup, @RequestParam(value = "dimension_id") Identifier dimensionId) {
return dbAdapter.validateAttibuteGroup(attributeGroup, dimensionId); return dbAdapter.validateAttibuteGroup(attributeGroup, dimensionId);
@ -92,8 +98,20 @@ public class BiAnalysisAdminApi extends RestControllerBase {
} }
@RequestMapping(method = RequestMethod.GET, path = "/dimensionAttributeValues") @RequestMapping(method = RequestMethod.GET, path = "/dimensionAttributeValues")
public List<String> listAttributeValues (@RequestParam(value = "attribute_id") List<Identifier> ids) { public List<String> listAttributeValues (@RequestParam(value = "attribute_id") Identifier id) {
return dbAdapter.getValuesForAttributes(ids); return dbAdapter.getFilteredValuesForAttribute(id, "", -1);
}
public record DimensionAttributeLabel(String label) {}
@RequestMapping(method = RequestMethod.GET, path = "/filterDimensionAttributeValues")
public List<DimensionAttributeLabel> listAttributeValues (@RequestParam(value = "attribute_id") Identifier id,
@RequestParam(value = "q") String q,
@RequestParam(value = "l") int length) {
return dbAdapter.getFilteredValuesForAttribute(id, q, length)
.stream()
.map(DimensionAttributeLabel::new)
.toList();
} }
@RequestMapping(method = RequestMethod.PUT, path = "/hideAttribute") @RequestMapping(method = RequestMethod.PUT, path = "/hideAttribute")
@ -101,4 +119,14 @@ public class BiAnalysisAdminApi extends RestControllerBase {
dbAdapter.hideAttributeById(id, hide); dbAdapter.hideAttributeById(id, hide);
} }
@RequestMapping(method = RequestMethod.PUT, path = "/hideDimension")
public void hideDimension (@RequestBody final Boolean hide, @RequestParam(value = "dimension_id") Identifier id) {
dbAdapter.hideDimensionById(id, hide);
}
@RequestMapping(method = RequestMethod.PUT, path = "/moveAttributes")
public void moveAttributes (@RequestParam(value = "attribute_id1") Identifier id1, @RequestParam(value = "attribute_id2") Identifier id2) {
dbAdapter.switchAttributePositions(id1, id2);
}
} }

111
src/de/superx/bianalysis/rest/BiAnalysisApi.java

@ -5,6 +5,7 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors;
import java.util.Base64; import java.util.Base64;
import java.util.Date; import java.util.Date;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -19,15 +20,18 @@ import org.springframework.web.bind.annotation.RestController;
import de.superx.bianalysis.ExcelSheetBuilder; import de.superx.bianalysis.ExcelSheetBuilder;
import de.superx.bianalysis.ReportDefinition; import de.superx.bianalysis.ReportDefinition;
import de.superx.bianalysis.StoredReport; import de.superx.bianalysis.StoredReport;
import de.superx.bianalysis.jasper.JasperReportJsonWrapper;
import de.superx.bianalysis.metadata.Identifier; import de.superx.bianalysis.metadata.Identifier;
import de.superx.bianalysis.models.Dimension; import de.superx.bianalysis.models.Dimension;
import de.superx.bianalysis.models.DimensionAttribute; import de.superx.bianalysis.models.DimensionAttribute;
import de.superx.bianalysis.models.FactTable; import de.superx.bianalysis.models.FactTable;
import de.superx.bianalysis.models.Measure; import de.superx.bianalysis.models.Measure;
import de.superx.bianalysis.models.Right; import de.superx.bianalysis.models.Right;
import de.superx.bianalysis.repository.dto.MeasureDto;
import de.superx.bianalysis.service.BiAnalysisManager; import de.superx.bianalysis.service.BiAnalysisManager;
import de.superx.bianalysis.service.BiAnalysisRightService; import de.superx.bianalysis.service.BiAnalysisRightService;
import de.superx.bianalysis.service.DbMetaAdapter; import de.superx.bianalysis.service.DbMetaAdapter;
import de.superx.bianalysis.service.JasperReportExport;
import de.superx.common.NotYetImplementedException; import de.superx.common.NotYetImplementedException;
import de.superx.rest.RestControllerBase; import de.superx.rest.RestControllerBase;
import de.superx.rest.model.Download; import de.superx.rest.model.Download;
@ -57,6 +61,9 @@ public class BiAnalysisApi extends RestControllerBase {
@Autowired @Autowired
BiAnalysisManager biAnalysisManager; BiAnalysisManager biAnalysisManager;
@Autowired
JasperReportExport jasperReportExport;
@Override @Override
protected Logger getLogger() { protected Logger getLogger() {
@ -65,17 +72,12 @@ public class BiAnalysisApi extends RestControllerBase {
@RequestMapping(method = RequestMethod.GET, path = "/facttables") @RequestMapping(method = RequestMethod.GET, path = "/facttables")
public List<FactTable> listFactTables() throws NotYetImplementedException { public List<FactTable> listFactTables() throws NotYetImplementedException {
List<Integer> sachgebiete = rightsService.getSachgebiete(Right.CREATE_ANALYSIS, Right.VIEW_REPORT); List<FactTable> facts = dbAdapter.getFactTables();
List<Identifier> factTables = rightsService.getFactTables(Right.CREATE_ANALYSIS, Right.VIEW_REPORT);
List<FactTable> facts = dbAdapter.getFactTables(sachgebiete, factTables);
return facts; return facts;
} }
@RequestMapping(method = RequestMethod.GET, path = "/dimensions") @RequestMapping(method = RequestMethod.GET, path = "/dimensions")
public List<Dimension> listDimensions(@RequestParam(value = "facttable_id") String facttable_id) { public List<Dimension> listDimensions(@RequestParam(value = "facttable_id") String facttable_id) {
int sachgebietTid = dbAdapter.getSachgebietByFactTableId(facttable_id);
rightsService.checkSachgebiet(sachgebietTid, Right.CREATE_ANALYSIS);
rightsService.checkFactTable(new Identifier(facttable_id), Right.CREATE_ANALYSIS);
return dbAdapter.getDimensionsWithoutHidden(new Identifier(facttable_id)); return dbAdapter.getDimensionsWithoutHidden(new Identifier(facttable_id));
} }
@ -83,24 +85,24 @@ public class BiAnalysisApi extends RestControllerBase {
// granted vs allowed // granted vs allowed
// umstellen auf camel case // umstellen auf camel case
@RequestMapping(method = RequestMethod.GET, path = "/dimensionAttributeValues") @RequestMapping(method = RequestMethod.GET, path = "/dimensionAttributeValues")
public List<String> listAttributeValues (@RequestParam(value = "attribute_id") List<Identifier> attribute_id, @RequestParam(value = "facts") List<Identifier> facts) { public List<String> listAttributeValues(@RequestParam(value = "attribute_id") List<Identifier> ids, @RequestParam(value = "facts") List<Identifier> facts) {
List<Integer> tids = rightsService.getSachgebiete(Right.CREATE_ANALYSIS); List<DimensionAttribute> attributes = dbAdapter.getDimensionAttributeByIds(ids, facts);
List<Identifier> factTables = rightsService.getFactTables(Right.CREATE_ANALYSIS);
List<DimensionAttribute> attributes = dbAdapter.getAllowedDimensionAttributes(attribute_id, tids, factTables);
return dbAdapter.getDimensionAttributeValues(attributes, facts); return dbAdapter.getDimensionAttributeValues(attributes, facts);
} }
@RequestMapping(method = RequestMethod.GET, path = "/dimensionAttributeValuesHierarchy") @RequestMapping(method = RequestMethod.GET, path = "/measures")
public List<List<Object>> listAttributeValuesHierarchy(@RequestParam(value = "attribute_id") String attribute_id) { public List<MeasureDto> listMeasures(@RequestParam(value = "facttable_id") String factId) {
rightsService.checkCreateRights(); return dbAdapter.findMeasuresByFactTableId(new Identifier(factId));
return dbAdapter.getDimensionAttributeValuesHierarchy(new Identifier(attribute_id));
} }
@RequestMapping(method = RequestMethod.GET, path = "/measures") @RequestMapping(method = RequestMethod.GET, path = "/rolePlayingDimensions")
public List<Measure> listMeasures(@RequestParam(value = "facttable_id") String facttable_id) { public List<Dimension> listRolePlayingDimensions(@RequestParam(value = "primaryFactId") Identifier primaryFactId, @RequestParam(value = "secondaryFactId") Identifier secondaryFactId) {
rightsService.checkSachgebiet(dbAdapter.getSachgebietByFactTableId(facttable_id), Right.CREATE_ANALYSIS, Right.VIEW_REPORT); return dbAdapter.findRolePlayingDimensionsByFacttables(primaryFactId, secondaryFactId);
rightsService.checkFactTable(new Identifier(facttable_id), Right.CREATE_ANALYSIS, Right.VIEW_REPORT); }
return dbAdapter.getMeasures(new Identifier(facttable_id));
@RequestMapping(method = RequestMethod.GET, path = "/rolePlayingDimensionsForFacttable")
public List<Dimension> listRolePlayingDimensions(@RequestParam(value = "factId") Identifier factId) {
return this.dbAdapter.findConformedDimensionsWithAtLeastTwoOccurences(factId);
} }
@RequestMapping(method = RequestMethod.GET, path = "/findReportDefinition") @RequestMapping(method = RequestMethod.GET, path = "/findReportDefinition")
@ -108,57 +110,8 @@ public class BiAnalysisApi extends RestControllerBase {
@RequestParam(value = "title") Optional<String> title, @RequestParam(value = "title") Optional<String> title,
@RequestParam(value = "sach") Optional<Integer> sach, @RequestParam(value = "sach") Optional<Integer> sach,
@RequestParam(value = "facts") Optional<List<String>> facts) { @RequestParam(value = "facts") Optional<List<String>> facts) {
rightsService.checkCreateRights();
List<Integer> allowedSachgebiete = rightsService.getSachgebiete(Right.CREATE_ANALYSIS, Right.VIEW_REPORT); return dbAdapter.findStoredReports(title, sach, facts);
List<Identifier> allowedFacts = rightsService.getFactTables(Right.CREATE_ANALYSIS, Right.VIEW_REPORT);
List<StoredReport> result = new ArrayList<>();
for (StoredReport report : dbAdapter.findAllStoredReports()) {
List<Integer> sachgebieteOfReport = dbAdapter.getSachgebieteForReport(report.reportDefinition);
if (!allowedSachgebiete.isEmpty() && !allowedSachgebiete.containsAll(sachgebieteOfReport)) {
continue;
}
if (title.isPresent()) {
if (!report.name.toLowerCase().contains(title.get().toLowerCase())) {
continue;
}
}
if (sach.isPresent()) {
if (!sachgebieteOfReport.contains(sach.get())) {
continue;
}
}
if(allowedFacts != null && allowedFacts.size() > 0) {
boolean isFactAllowed = true;
for (Identifier reportFactId : report.reportDefinition.factTableIds) {
if(!allowedFacts.isEmpty() && !allowedFacts.contains(reportFactId)) {
isFactAllowed = false;
}
}
if (!isFactAllowed) {
continue;
}
}
if (facts.isPresent()) {
boolean isFactMissing = false;
for (Identifier reportFactId : report.reportDefinition.factTableIds) {
if (!facts.get().contains(reportFactId.composedId)) {
isFactMissing = true;
break;
}
}
if (isFactMissing) {
continue;
}
}
result.add(report);
}
return result;
} }
@RequestMapping(method = RequestMethod.GET, path = "/getStoredReport") @RequestMapping(method = RequestMethod.GET, path = "/getStoredReport")
@ -173,7 +126,6 @@ public class BiAnalysisApi extends RestControllerBase {
logger.error("Couldn't create report", e); logger.error("Couldn't create report", e);
e.printStackTrace(); e.printStackTrace();
} }
storedReport.isReadOnly = Boolean.valueOf(!this.rightsService.isCreateRight()); storedReport.isReadOnly = Boolean.valueOf(!this.rightsService.isCreateRight());
return storedReport; return storedReport;
} }
@ -274,5 +226,22 @@ public class BiAnalysisApi extends RestControllerBase {
rightsService.checkFactTable(factId, Right.CREATE_ANALYSIS); rightsService.checkFactTable(factId, Right.CREATE_ANALYSIS);
} }
} }
@RequestMapping(method = RequestMethod.GET, path = "/jasper/datasource")
public JasperReportJsonWrapper getJasperJsonDatasource(@RequestParam(value = "stored_report_id") int storedReportId) throws Exception {
StoredReport storedReport = getStoredReport(storedReportId);
return jasperReportExport.getJasperReportJsonWrapper(storedReport);
}
@RequestMapping(method = RequestMethod.GET, path = "/jasper/template")
public Download getJasperTemplate(@RequestParam(value = "stored_report_id") int storedReportId) throws Exception {
StoredReport storedReport = getStoredReport(storedReportId);
jasperReportExport.createJson(storedReport);
jasperReportExport.createJasperReport(storedReport);
Download export = jasperReportExport.createZip();
return export;
}
} }

148
src/de/superx/bianalysis/service/BiAnalysisManager.java

@ -1,22 +1,27 @@
package de.superx.bianalysis.service; package de.superx.bianalysis.service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.sql.DataSource;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import de.superx.access.DbSqlRestrictionProvider;
import de.superx.bianalysis.ColumnElement; import de.superx.bianalysis.ColumnElement;
import de.superx.bianalysis.ColumnElementBuilder; import de.superx.bianalysis.ColumnElementBuilder;
import de.superx.bianalysis.ReportDefinition; import de.superx.bianalysis.ReportDefinition;
import de.superx.bianalysis.ReportMetadata; import de.superx.bianalysis.ReportMetadata;
import de.superx.bianalysis.ResultBuilder; import de.superx.bianalysis.ResultBuilder;
import de.superx.bianalysis.ResultMerger; import de.superx.bianalysis.SecondaryFacttable;
import de.superx.bianalysis.metadata.Identifier;
import de.superx.bianalysis.models.DimensionAttribute; import de.superx.bianalysis.models.DimensionAttribute;
import de.superx.bianalysis.models.Measure;
import de.superx.bianalysis.sqlgeneration.SQLGenerator; import de.superx.bianalysis.sqlgeneration.SQLGenerator;
import de.superx.bianalysis.sqlgeneration.SQLGeneratorDrillAcross;
import de.superx.bianalysis.sqlgeneration.SQLGeneratorTotals; import de.superx.bianalysis.sqlgeneration.SQLGeneratorTotals;
import de.superx.common.NotYetImplementedException; import de.superx.common.NotYetImplementedException;
import de.superx.rest.model.Item; import de.superx.rest.model.Item;
@ -29,6 +34,9 @@ import de.superx.spring.service.UserService;
public class BiAnalysisManager { public class BiAnalysisManager {
static Logger logger = Logger.getLogger(BiAnalysisManager.class); static Logger logger = Logger.getLogger(BiAnalysisManager.class);
static final int POSTGRES_MAX_COL_LIMIT = 1664;
static final String DEFAUL_SCHEMA = "presentation";
@Autowired @Autowired
BiAnalysisRightService biAnalysisRightService; BiAnalysisRightService biAnalysisRightService;
@ -36,39 +44,31 @@ public class BiAnalysisManager {
@Autowired @Autowired
UserService userService; UserService userService;
public Result createResult(ReportDefinition reportDefinition, DbMetaAdapter dbAdapter) throws Exception { @Autowired
DbSqlRestrictionProvider sqlRestrictionProvider;
@Autowired
DataSource dataSource;
List<Result> results = new ArrayList<>(); public Result createResult(ReportDefinition reportDefinition, DbMetaAdapter dbAdapter) throws Exception {
ResultMerger resultMerger = new ResultMerger(dbAdapter);
for (Identifier factTableId : reportDefinition.factTableIds) {
ReportDefinition definition = resultMerger.createFactTableSpecificReportDefinition(reportDefinition, factTableId);
if(definition.leftDimensionAttributeIds.isEmpty() ||
definition.measureIds.isEmpty()) {
continue;
}
try {
biAnalysisRightService.checkCreateOrViewRights();
ReportMetadata metadata = new ReportMetadata(definition, factTableId, dbAdapter);
checkColLimit(reportDefinition, dbAdapter, metadata);
Result reportSegment = getReportData(metadata, dbAdapter);
results.add(reportSegment);
} catch (Exception e) {
logger.error("Couldn't create report", e);
throw e;
}
}
Result result;
if(reportDefinition.factTableIds.size() > 1) { if(reportDefinition.factTableIds.size() > 1) {
result = resultMerger.buildMergedReport(reportDefinition, results); throw new IllegalArgumentException("Only one facttable per report definition allowed.");
} else { }
result = results.get(0);
try {
biAnalysisRightService.checkCreateOrViewRights();
ReportMetadata metadata = new ReportMetadata(reportDefinition, reportDefinition.factTableIds.get(0), dbAdapter);
checkColLimit(reportDefinition, dbAdapter, metadata);
Result result = getReportData(metadata, dbAdapter, reportDefinition);
return result;
} catch (Exception e) {
logger.error("Couldn't create report", e);
throw e;
} }
return result;
} }
private static void checkColLimit(ReportDefinition reportDefinition, DbMetaAdapter dbAdapter, ReportMetadata metadata) throws NotYetImplementedException { private static void checkColLimit(ReportDefinition reportDefinition, DbMetaAdapter dbAdapter, ReportMetadata metadata) throws NotYetImplementedException {
final int POSTGRES_MAX_COL_LIMIT = 1664;
int resultCols = 1; int resultCols = 1;
for (DimensionAttribute dimensionAttribute : metadata.topDimensionAttributes) { for (DimensionAttribute dimensionAttribute : metadata.topDimensionAttributes) {
resultCols *= dimensionAttribute.getDimensionAttributeValues().size(); resultCols *= dimensionAttribute.getDimensionAttributeValues().size();
@ -80,29 +80,30 @@ public class BiAnalysisManager {
} }
} }
public static String getSqlStatement(ReportDefinition definition, DbMetaAdapter dbAdapter) { private Result getReportData(ReportMetadata metadata, DbMetaAdapter dbAdapter, ReportDefinition definition) throws Exception {
String sqlStatement = ""; String reportSql = getSqlStatement(definition, dbAdapter);
ReportMetadata reportMetadata = definition.getReportMetadata(dbAdapter, definition.factTableIds.get(0)); String totalsColumnSql = getTotalsColumnSqlStatement(definition, dbAdapter);
List<ColumnElement> columnElements = ColumnElementBuilder.buildColumnElements(reportMetadata);
SQLGenerator sqlGenerator = new SQLGenerator(reportMetadata, columnElements);
sqlStatement = sqlGenerator.buildSqlStatement();
return sqlStatement;
}
private Result getReportData(ReportMetadata metadata, DbMetaAdapter dbAdapter) throws Exception {
List<ColumnElement> columnElements = ColumnElementBuilder.buildColumnElements(metadata);
List<Item> sqlStatements = new ArrayList<>(); List<Item> sqlStatements = new ArrayList<>();
String userName = userService.currentUserDetails().getUsername(); sqlStatements.add(new Item("noAggregatesSQL", dbAdapter.applyAccessRestrictions(reportSql)));
String schemaName = "presentation"; sqlStatements.add(new Item("totalsColumnSQL", dbAdapter.applyAccessRestrictions(totalsColumnSql)));
if ( DbMetaAdapter.rechteModus == DbMetaAdapter.Rechtekonzept.SchemaBased) {
schemaName = "presentation_" + userName; // TODO workaround
if(metadata.hasOuter()) {
for (DimensionAttribute attribute : metadata.leftDimensionAttributes) {
attribute.setGrouping(true);
}
for (DimensionAttribute attribute : metadata.topDimensionAttributes) {
attribute.setGrouping(true);
}
for (SecondaryFacttable sf : metadata.secondaryFacttables) {
for (Measure m : sf.measures) {
metadata.measures.add(m);
}
}
} }
String reportSQL = new SQLGenerator(metadata, columnElements, schemaName).buildFormattedSqlStatement();
String totalsColumnSQL = SQLGeneratorTotals.generateTotalsColumnSQL(metadata, schemaName);
sqlStatements.add(new Item("noAggregatesSQL", reportSQL));
sqlStatements.add(new Item("totalsColumnSQL", totalsColumnSQL));
List<ColumnElement> columnElements = ColumnElementBuilder.buildColumnElements(metadata);
ResultBuilder resultBuilder = new ResultBuilder(dbAdapter.getDataSource()); ResultBuilder resultBuilder = new ResultBuilder(dbAdapter.getDataSource());
resultBuilder.setColumnElements(columnElements); resultBuilder.setColumnElements(columnElements);
resultBuilder.setReportMetadata(metadata); resultBuilder.setReportMetadata(metadata);
@ -120,7 +121,6 @@ public class BiAnalysisManager {
} }
private static List<Row> nodeToRow(TreeNode<Map<String, Object>> treeNode, List<Row> rows) { private static List<Row> nodeToRow(TreeNode<Map<String, Object>> treeNode, List<Row> rows) {
splitHierarchyColumn(treeNode);
rows.add(new Row(treeNode.data, true)); rows.add(new Row(treeNode.data, true));
for (TreeNode child: treeNode.children) { for (TreeNode child: treeNode.children) {
List<Row> childRows = nodeToRow(child, rows); List<Row> childRows = nodeToRow(child, rows);
@ -132,23 +132,47 @@ public class BiAnalysisManager {
} }
return rows; return rows;
} }
//Im Treenode wird die Hierarchie in einer Spalte abgebildet, diese muss wieder auf die ursprünglichen Spalten aufgeuteilt werden
private static void splitHierarchyColumn(TreeNode<Map<String, Object>> node) {
String realColumn = node.data.get("column").toString();
if( realColumn.contains(" (Ebene ")) {
String[] splittedString = realColumn.split(" \\(Ebene ");
String mainColumn = splittedString[0];
node.data.put(realColumn, node.data.get(mainColumn));
node.data.put(mainColumn, "");
}
}
public static String getTotalsColumnSqlStatement(ReportDefinition definition, DbMetaAdapter dbAdapter) { public static String getTotalsColumnSqlStatement(ReportDefinition definition, DbMetaAdapter dbAdapter) {
String sqlStatement = ""; if(definition.topDimensionAttributeIds.isEmpty()) {
return "";
}
String sql = "";
ReportMetadata metadata = new ReportMetadata(definition, definition.factTableIds.get(0), dbAdapter); ReportMetadata metadata = new ReportMetadata(definition, definition.factTableIds.get(0), dbAdapter);
sqlStatement = SQLGeneratorTotals.generateTotalsColumnSQL(metadata);
return sqlStatement; if(metadata.hasOuter()) {
ReportDefinition definitionTotals = definition.toTotalsDefinition();
metadata = new ReportMetadata(definitionTotals, definitionTotals.factTableIds.get(0), dbAdapter);
HashMap<String, ReportMetadata> metadatas = metadata.buildReportMetadatasForDrillAcross();
SQLGeneratorDrillAcross sqlGeneratorDrillAcross
= new SQLGeneratorDrillAcross(metadata.factTable.getId(), metadatas);
sql = sqlGeneratorDrillAcross.buildFormattedSqlStatement();
} else {
sql = SQLGeneratorTotals.generateTotalsColumnSQL(metadata, DEFAUL_SCHEMA);
}
return sql;
}
public static String getSqlStatement(ReportDefinition definition, DbMetaAdapter dbAdapter) {
String sql = "";
ReportMetadata metadata = definition.getReportMetadata(dbAdapter, definition.factTableIds.get(0));
if(metadata.hasOuter()) {
HashMap<String, ReportMetadata> metadatas = metadata.buildReportMetadatasForDrillAcross();
SQLGeneratorDrillAcross sqlGeneratorDrillAcross
= new SQLGeneratorDrillAcross(definition.factTableIds.get(0), metadatas);
sql = sqlGeneratorDrillAcross.buildFormattedSqlStatement();
} else {
List<ColumnElement> columnElements = ColumnElementBuilder.buildColumnElements(metadata);
SQLGenerator generator = new SQLGenerator(metadata, columnElements);
sql = generator.buildFormattedSqlStatement();
}
return sql;
} }
} }

2592
src/de/superx/bianalysis/service/DbMetaAdapter.java

File diff suppressed because it is too large Load Diff

203
src/de/superx/bianalysis/service/JasperReportExport.java

@ -0,0 +1,203 @@
package de.superx.bianalysis.service;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.jdom2.Document;
import org.jdom2.Element;
import org.apache.log4j.Logger;
import org.jdom2.CDATA;
import org.jdom2.Namespace;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.fasterxml.jackson.databind.ObjectMapper;
import de.superx.bianalysis.StoredReport;
import de.superx.bianalysis.jasper.JasperReportJsonWrapper;
import de.superx.jdbc.entity.SxCaptions;
import de.superx.jdbc.repository.SxCaptionsRepository;
import de.superx.rest.model.Download;
import de.superx.util.PathAndFileUtils;
@Service()
public class JasperReportExport {
@Autowired
SxCaptionsRepository sxCaptionsRepository;
public static String DATASOURCE_URL = "/api/reportwizard/template/datasource/storedReport?";
private static String DATA_ADAPTER_JSON_FILE = "JsonDataAdapter.jrdax";
public static String DATA_ADAPTER_REST = "JsonDataAdapterRest.jrdax";
public static String MAIN_REPORT = "MainReport.jrxml";
private static String MAIN_REPORT_TEMPLATE = "MainReportTemplate.jrxml";
public static String BI_ANALYSIS_JSON = "biAnalysis.json";
private static String ZIP_NAME = "biAnalysisJasper.zip";
public static String ZIP = ZIP_NAME;
private static Namespace JASPER_NAMESPCAE = Namespace.getNamespace("http://jasperreports.sourceforge.net/jasperreports");
static Logger logger = Logger.getLogger(JasperReportExport.class);
// not yet in use
public void setJsonRestAdapter(int storedReportId) {
try {
// load file of dataAdapter
File dataAdapter = new File(getPath(DATA_ADAPTER_REST));
SAXBuilder saxBuilder = new SAXBuilder();
Document jsonAdapterDocument = saxBuilder.build(dataAdapter);
// change "location"
Element root = jsonAdapterDocument.getRootElement();
List<Element> c = root.getChildren();
Element url = root.getChild("dataFile").getChild("url");
url.setText(DATASOURCE_URL + storedReportId);
// write changes into file
// Serialisieren der XML-Datei
XMLOutputter xmlOutputter = new XMLOutputter();
xmlOutputter.setFormat(Format.getPrettyFormat());
xmlOutputter.output(jsonAdapterDocument, new FileWriter(getPath(DATA_ADAPTER_REST)));
} catch (Exception e) {
logger.error("Fehler bei der Änderung des JSON-Rest-Adapters: " + e.getMessage(), e);
}
}
public JasperReportJsonWrapper getJasperReportJsonWrapper(StoredReport storedReport) {
List<SxCaptions> sxReportCaptions = sxCaptionsRepository.findByIdStartingWith("REPORT");
return new JasperReportJsonWrapper(storedReport, sxReportCaptions);
}
public void createJson(StoredReport storedReport) {
try {
JasperReportJsonWrapper jasperReportJsonWrapper = getJasperReportJsonWrapper(storedReport);
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(jasperReportJsonWrapper);
try (FileWriter writer = new FileWriter(getPath(BI_ANALYSIS_JSON))) {
writer.write(json);
}
} catch (IOException e) {
logger.error("Fehler bei der Erstellung des JSON-Files: " + e.getMessage(), e);
}
}
public void createJasperReport(StoredReport storedReport) {
try {
JasperReportJsonWrapper jasperReportJsonWrapper = getJasperReportJsonWrapper(storedReport);
// copy jasperReportTemplate
File mainReportTemplate = new File(getPath(MAIN_REPORT_TEMPLATE));
File mainReport = new File(getPath(MAIN_REPORT));
if (Files.exists(mainReport.toPath())) {
Files.delete(mainReport.toPath());
}
Files.copy(mainReportTemplate.toPath(), mainReport.toPath());
SAXBuilder saxBuilder = new SAXBuilder();
Document document = saxBuilder.build(mainReport);
// add individual fields to jasper report
List<String> fields = new ArrayList<>(jasperReportJsonWrapper.getJasperReportJson().getRows().get(0).keySet());
Element root = document.getRootElement();
Element subDataset = root.getChild("subDataset", JASPER_NAMESPCAE);
for (String field : fields) {
subDataset.addContent(createFieldElement(field));
}
// format xml to jrxml
Format format = Format.getPrettyFormat();
format.setIndent("\t"); // 4 Spaces
format.setExpandEmptyElements(false);
XMLOutputter xmlOutputter = new XMLOutputter(format);
String xmlString = xmlOutputter.outputString(document);
xmlString = xmlString.replaceAll(" />", "/>");
// save jasper report
try (FileWriter writer = new FileWriter(getPath(MAIN_REPORT))) {
writer.write(xmlString);
}
} catch (Exception e) {
logger.error("Fehler bei der Erstellung des Jasper-Reports: " + e.getMessage(), e);
}
}
private Element createFieldElement(String fieldName) {
// create new elements
Element fieldElement = new Element("field", JASPER_NAMESPCAE);
fieldElement.setAttribute("name", fieldName);
fieldElement.setAttribute("class", "java.lang.String");
if(fieldName.contains("Kennzahl|")) {
fieldElement.setAttribute("class", "java.lang.Integer");
} else {
fieldElement.setAttribute("class", "java.lang.String");
}
// create property element
Element propertyElement = new Element("property", JASPER_NAMESPCAE);
propertyElement.setAttribute("name", "net.sf.jasperreports.json.field.expression");
propertyElement.setAttribute("value", fieldName);
fieldElement.addContent(propertyElement);
// create fieldDescritpionE element
Element fieldDescriptionElement = new Element("fieldDescription", JASPER_NAMESPCAE);
CDATA cdata = new CDATA(fieldName);
fieldDescriptionElement.addContent(cdata);
fieldElement.addContent(fieldDescriptionElement);
return fieldElement;
}
public Download createZip() {
try (ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(ZIP))) {
putFileToZip(getPath(DATA_ADAPTER_JSON_FILE), zipOut);
putFileToZip(getPath(MAIN_REPORT), zipOut);
putFileToZip(getPath(BI_ANALYSIS_JSON), zipOut);
zipOut.close();
File zipFile = new File(ZIP);
try (FileInputStream fis = new FileInputStream(zipFile)) {
byte[] zipBytes = new byte[(int) zipFile.length()];
fis.read(zipBytes);
String base64String = Base64.getEncoder().encodeToString(zipBytes);
String contentType = "application/zip";
return new Download(ZIP_NAME, contentType, base64String);
}
} catch (IOException e) {
logger.error("Fehler beim Erstellen des Zips: " + e.getMessage());
return null;
}
}
private void putFileToZip(String path, ZipOutputStream zipOut) throws IOException {
String fileName = new File(path).getName();
zipOut.putNextEntry(new ZipEntry(fileName));
Files.copy(Paths.get(path), zipOut);
zipOut.closeEntry();
}
public static String getPath(String fileName) {
String jasperPath = PathAndFileUtils.getJasperDir();
return String.join(File.separator, new String[] {jasperPath, fileName});
}
}

296
src/de/superx/bianalysis/service/UserRestrictionService.java

@ -0,0 +1,296 @@
package de.superx.bianalysis.service;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import javax.sql.DataSource;
import java.sql.Connection;
import org.apache.commons.lang.StringUtils;
import org.springframework.jdbc.core.JdbcTemplate;
import de.superx.bianalysis.models.Right;
import de.superx.bianalysis.models.RightParam;
import de.superx.common.SxUser;
public class UserRestrictionService {
private SxUser user;
private DataSource dataSource;
private JdbcTemplate jt;
private Map<Integer, Set<Integer>> orgunitChildren = new HashMap<Integer, Set<Integer>>();
private static final Map<String, String> BASE_QUERIES = Map.of(
"facttable",
"(SELECT f.id FROM metadata.facttable f ",
"dimension",
"(SELECT d.id FROM metadata.dimension d"
+ " JOIN metadata.facttable f ON f.id = d.facttable_id",
"dimension_attribute",
"(SELECT da.id FROM metadata.dimension_attribute da"
+ " JOIN metadata.dimension d ON d.id = da.dimension_id"
+ " JOIN metadata.facttable f ON f.id = d.facttable_id",
"measure",
"(SELECT m.id FROM metadata.measure m"
+ " JOIN metadata.facttable f ON f.id = m.facttable_id"
);
public UserRestrictionService(SxUser user, DataSource dataSource) {
this.user = user;
this.dataSource = dataSource;
this.jt = new JdbcTemplate(dataSource);
}
public void applyMetadataRestrictions() {
List<String> tables = List.of(
"facttable",
"dimension",
"dimension_attribute",
"measure");
for (String tableName : tables) {
String resultSql = buildMetadataTableRestriction(tableName);
insertRightsViewRestriction(dataSource, "metadata", tableName , resultSql,
user.getHisInOneOrgUnitLidOfRole().intValue());
}
}
public void applyOrgunitRestrictions(Integer userOrgunitLid) {
String tableJoinColSql = """
SELECT DISTINCT ft.tablename, d.joincolumn
FROM metadata.dimension d
LEFT JOIN metadata.facttable ft ON ft.id = d.facttable_id
WHERE d.tablename = 'dim_orgunit'
OR d.tablename = 'dim_orgunit_flat'
and d.is_restricted = true
""";
List<Map<String, Object>> rows = jt.queryForList(tableJoinColSql);
Map<String, String> tableJoinColMap = rows.stream()
.collect(Collectors.toMap(
row -> (String) row.get("tablename"),
row -> (String) row.get("joincolumn"),
(existing, replacement) -> existing));
for (String tableName : tableJoinColMap.keySet()) {
if(tableName == null) {
continue;
}
String joinColumn = tableJoinColMap.get(tableName);
String restriction = buildOrgunitRestriction(userOrgunitLid, joinColumn);
if(!restriction.isEmpty()) {
insertRightsViewRestriction(dataSource, "presentation", tableName, restriction, userOrgunitLid.intValue());
}
}
}
public String buildMetadataTableRestriction(String tableName) {
List<String> topicAreaIds = getRightParamValues
(RightParam.TOPIC_AREA, Right.CREATE_ANALYSIS, Right.VIEW_REPORT);
List<String> topicIds = getRightParamValues
(RightParam.TOPIC, Right.CREATE_ANALYSIS, Right.VIEW_REPORT);
String resultSql = "";
if(!(topicAreaIds.isEmpty() && topicIds.isEmpty())) {
String baseSql = BASE_QUERIES.get(tableName);
String conditions = "";
conditions = buildConditionsForFacttable(topicAreaIds, topicIds);
resultSql = "WHERE id IN " + baseSql
+ (!conditions.isEmpty() ? " WHERE " + conditions : "") + ")";
return resultSql;
}
return "";
}
public String buildOrgunitRestriction(Integer userOrgunitLid, String joinColumn) {
List<Integer> allowedOrgunitLids = new ArrayList<>();
allowedOrgunitLids.add(userOrgunitLid);
allowedOrgunitLids.add(Integer.valueOf(-1));
List<String> params = getRightParamValues
(RightParam.ORGUNIT, Right.CREATE_ANALYSIS, Right.VIEW_REPORT);
if(!params.isEmpty()) {
for (String lid : params) {
allowedOrgunitLids.add(Integer.valueOf(lid));
}
}
Set<Integer> allowedOrgunitsWithChildren = new HashSet<>();
for (Integer lid : allowedOrgunitLids) {
allowedOrgunitsWithChildren.add(lid);
allowedOrgunitsWithChildren.addAll(fetchOrgunitChildren(lid));
}
String lidsAsString = allowedOrgunitsWithChildren.stream()
.map(String::valueOf)
.collect(Collectors.joining(","));
String restriction = "";
if(!allowedOrgunitsWithChildren.isEmpty()) {
restriction = "WHERE " + joinColumn + " IN (" + lidsAsString + ")";
}
return restriction;
}
private Set<Integer> fetchOrgunitChildren(Integer lid){
if(orgunitChildren.containsKey(lid)) {
return orgunitChildren.get(lid);
}
Set<Integer> orgunitChildLids = new HashSet<>();
String sql = "SELECT * FROM get_orgunit_child_lids(?, ?, ?)";
Set<Integer> children = new HashSet<>();
try (Connection conn = dataSource.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, lid.intValue());
pstmt.setString(2, "core");
pstmt.setString(3, "core_orgunit");
try (ResultSet rs = pstmt.executeQuery()) {
while (rs.next()) {
children.add(Integer.valueOf(rs.getInt("child_lid")));
}
}
orgunitChildLids.addAll(children);
orgunitChildren.put(lid, children);
} catch (SQLException e) {
e.printStackTrace();
}
return orgunitChildLids;
}
private String buildConditionsForFacttable(List<String> topicAreaIds, List<String> topicIds) {
Map<String, List<String>> grouped = new HashMap<>();
if (!topicIds.isEmpty()) {
String sql = "SELECT id, sachgebiettid FROM metadata.facttable "
+ "WHERE id IN (" + quoteAndJoin(topicIds) + ")";
try {
List<Map<String, Object>> rows = jt.queryForList(sql);
for (Map<String, Object> row : rows) {
String id = (String) row.get("id");
String tid = row.get("sachgebiettid").toString();
List<String> list = grouped.get(tid);
if (list == null) {
list = new ArrayList<>();
grouped.put(tid, list);
}
list.add(id);
}
} catch (Exception e) {
e.printStackTrace();
}
}
StringBuilder whereClause = new StringBuilder();
for (Map.Entry<String, List<String>> entry : grouped.entrySet()) {
List<String> ids = entry.getValue();
if (whereClause.length() > 0) {
whereClause.append(" OR ");
}
whereClause.append("(f.id IN (" + quoteAndJoin(ids) + "))");
}
// Unpaired sachgebietTids
for (String tid : topicAreaIds) {
if (!grouped.containsKey(tid)) {
if (whereClause.length() > 0) {
whereClause.append(" OR ");
}
whereClause.append("f.sachgebiettid IN (" + tid+ ")");
}
}
return whereClause.toString();
}
private void insertRightsViewRestriction(DataSource ds, String schema, String table, String restriction, int orgunitLid) {
String userName = user.getName();
String roleName = user.getRole();
int userId = user.getUserIdAsInt();
try (Connection conn = ds.getConnection();
Statement stmt = conn.createStatement()) {
String sql = "INSERT INTO public.view_rechte(user_id, user_name, "
+ "role_name, orgunit_lid, schema_name, table_name, restriction, external_entry) " +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, userId);
pstmt.setString(2, userName);
pstmt.setString(3, roleName);
pstmt.setInt(4, orgunitLid);
pstmt.setString(5, schema);
pstmt.setString(6, table);
pstmt.setString(7, restriction);
pstmt.setInt(8, 1);
pstmt.execute();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* Retrieves parameter values for a given RightParam across multiple Rights, returning an empty list if
* no user rights exist or no matching parameters are found.
*
* This method searches for the first valid Right in the provided sequence,
* extracts its parameter map, and parses comma-separated values for the specified parameter.
*/
public List<String> getRightParamValues(RightParam param, Right... rights) {
if (user == null) return List.of();
Map<String, Map<String, String>> rightsMap = user.getRightsMap();
Map<String, String> rightParams = findFirstValidRight(rightsMap, rights);
return Optional.ofNullable(rightParams)
.map(params -> params.get(param.getString()))
.map(values -> StringUtils.split(values, ','))
.map(Arrays::stream)
.map(stream -> stream.map(StringUtils::trim).collect(Collectors.toList()))
.orElse(List.of());
}
private static Map<String, String> findFirstValidRight(Map<String, Map<String, String>> rightsMap, Right... rights) {
return Arrays.stream(rights)
.map(Right::getString)
.map(rightsMap::get)
.filter(Objects::nonNull)
.findFirst()
.orElse(null);
}
public static String quoteAndJoin(List<String> strings) {
return strings.stream()
.map(s -> "'" + s + "'")
.collect(Collectors.joining(","));
}
public void clearRestrictions() throws SQLException {
try(Connection dbConnection = dataSource.getConnection()){
Statement stmt = dbConnection.createStatement();
String sql = "DELETE FROM public.view_rechte WHERE user_name = '"
+ user.getUsername() + "' AND role_name = '" + user.getRole()
+ "' AND external_entry = 1 AND orgunit_lid = " + user.getHisInOneOrgUnitLidOfRole().intValue();
stmt.execute(sql);
}
}
}

77
src/de/superx/bianalysis/sqlgeneration/AttributeGroupQueryBuilder.java

@ -4,6 +4,7 @@ import java.sql.Types;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.StringJoiner; import java.util.StringJoiner;
import java.util.stream.Collectors;
import de.superx.bianalysis.FaultyMetadataException; import de.superx.bianalysis.FaultyMetadataException;
import de.superx.bianalysis.models.Condition; import de.superx.bianalysis.models.Condition;
@ -137,32 +138,68 @@ public class AttributeGroupQueryBuilder {
return new SqlQuery(updateSql, params, types); return new SqlQuery(updateSql, params, types);
} }
public static SqlQuery buildValidationQuery(String tableName, String colList, List<CriteriaGroup> groups) { public static List<SqlQuery> buildValidationQuery(String tableName, String colList, List<CriteriaGroup> groups) {
StringJoiner selectStatements = new StringJoiner(" INTERSECT "); List<SqlQuery> queries = new ArrayList<>();
List<String> caseParams = new ArrayList<>(); List<CriteriaGroup> groupsWithoutElse = groups.stream()
List<Integer> argTypes = new ArrayList<>(); .filter(g -> !g.isElse)
.collect(Collectors.toList());
List<List<CriteriaGroup>> pairs = getAllPairs(groupsWithoutElse);
for (CriteriaGroup group : groups) { for (List<CriteriaGroup> listOfTwo : pairs) {
if(group.isElse) { StringJoiner selectStatements = new StringJoiner(" INTERSECT ");
continue; List<String> caseParams = new ArrayList<>();
} List<Integer> argTypes = new ArrayList<>();
StringBuilder criteraStmt = new StringBuilder("SELECT " + colList); for (CriteriaGroup group : listOfTwo) {
StringJoiner selectParams = new StringJoiner(", "); if(group.isElse) {
continue;
}
StringBuilder criteraStmt = new StringBuilder("SELECT " + colList);
StringJoiner selectParams = new StringJoiner(", ");
criteraStmt.append(selectParams); criteraStmt.append(selectParams);
criteraStmt.append(" FROM "); criteraStmt.append(" FROM ");
criteraStmt.append(tableName); criteraStmt.append(tableName);
criteraStmt.append(" WHERE "); criteraStmt.append(" WHERE ");
StringJoiner joinerConditions = buildConditionClause(caseParams, argTypes, group); StringJoiner joinerConditions = buildConditionClause(caseParams, argTypes, group);
criteraStmt.append(joinerConditions.toString()); criteraStmt.append(joinerConditions.toString());
selectStatements.add(criteraStmt); selectStatements.add(criteraStmt);
} }
Object[] params = caseParams.toArray(); Object[] params = caseParams.toArray();
int[] types = argTypes.stream().mapToInt(Integer::intValue).toArray(); int[] types = argTypes.stream().mapToInt(Integer::intValue).toArray();
return new SqlQuery(selectStatements.toString(), params, types); queries.add(new SqlQuery(selectStatements.toString(), params, types));
}
return queries;
}
public static <T> List<List<T>> getAllPairs(List<T> list) {
List<List<T>> result = new ArrayList<>();
getPairsHelper(list, 0, new ArrayList<>(), result);
return result;
}
private static <T> void getPairsHelper(List<T> list, int index, List<T> current, List<List<T>> result) {
// If we have exactly 2 elements, add to result
if (current.size() == 2) {
result.add(new ArrayList<>(current));
return;
}
// If we've reached end of list but don't have 2 elements, stop
if (index == list.size()) {
return;
}
// Skip current element (don't pick it)
getPairsHelper(list, index + 1, current, result);
// Pick current element (if we have room for it)
if (current.size() < 2) {
current.add(list.get(index));
getPairsHelper(list, index + 1, current, result);
current.remove(current.size() - 1);
}
} }
} }

231
src/de/superx/bianalysis/sqlgeneration/SQLGenerator.java

@ -1,11 +1,17 @@
package de.superx.bianalysis.sqlgeneration; package de.superx.bianalysis.sqlgeneration;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.StringJoiner; import java.util.StringJoiner;
import de.superx.bianalysis.ColumnElement; import de.superx.bianalysis.ColumnElement;
import de.superx.bianalysis.ReportMetadata; import de.superx.bianalysis.ReportMetadata;
import de.superx.bianalysis.JoinCriteria;
import de.superx.bianalysis.SecondaryFacttable;
import de.superx.bianalysis.models.DimensionAttribute; import de.superx.bianalysis.models.DimensionAttribute;
import de.superx.bianalysis.models.FactTable;
import de.superx.bianalysis.models.Filter; import de.superx.bianalysis.models.Filter;
import de.superx.bianalysis.models.Measure; import de.superx.bianalysis.models.Measure;
@ -100,8 +106,6 @@ public class SQLGenerator {
public ReportMetadata reportMetadata; public ReportMetadata reportMetadata;
public List<ColumnElement> columnElements; public List<ColumnElement> columnElements;
public char formatSql = ' '; public char formatSql = ' ';
public static String PRESENTATION_SCHEMA = "presentation_user";
private final static String HIERARCHY_MODEL_SUFFIX = "_hierarchy";
private String presentationSchema = "presentation"; private String presentationSchema = "presentation";
public SQLGenerator(ReportMetadata reportMetadata, List<ColumnElement> columnElements, public SQLGenerator(ReportMetadata reportMetadata, List<ColumnElement> columnElements,
@ -166,33 +170,37 @@ public class SQLGenerator {
String tableAlias = attribute.getDimensionTableAlias(); String tableAlias = attribute.getDimensionTableAlias();
String columnAlias = attribute.getDimensionColumnAlias(); String columnAlias = attribute.getDimensionColumnAlias();
if(attribute.isHierarchy()) { if(attribute.isNullAttribute()) {
columns.add(String.format("NULL::text AS %s", columnAlias));
// Build select expressions for each hierarchy level (ancestor node),
// assigning aliases col0, col1, etc.
StringBuilder resultBuilder = new StringBuilder();
for (int i = reportMetadata.minBridgeLvl; i < reportMetadata.maxBridgeLvl; i++) {
resultBuilder
.append(attribute.getDimensionTableAlias())
.append(".ancestor_")
.append(columnName)
.append('[').append(i + 1).append(']')
.append(" AS \"col").append(i).append("\"");
if (i < reportMetadata.maxBridgeLvl - 1) {
resultBuilder.append(", ");
}
}
columns.add(resultBuilder.toString());
} else { } else {
columns.add(String.format("%s.%s AS %s", tableAlias, columnName, columnAlias)); columns.add(String.format("%s.%s AS %s", tableAlias, columnName, columnAlias));
}
if(attribute.isGrouping()) {
if(attribute.isNullAttribute()) {
columns.add(String.format(1 + " AS g_%s", columnAlias));
} else {
columns.add(String.format("grouping(%s.%s) AS g_%s", tableAlias, columnName, columnAlias));
}
}
String sortOrderColumn = attribute.getSortOrderColumn(); String sortOrderColumn = attribute.getSortOrderColumn();
if (sortOrderColumn != null) { if (sortOrderColumn != null) {
if(attribute.isNullAttribute()) {
columns.add(String.format("NULL::bigint AS %s_%s", columnAlias, sortOrderColumn));
} else {
columns.add(String.format("%s.%s AS %s_%s", columns.add(String.format("%s.%s AS %s_%s",
tableAlias, sortOrderColumn, columnAlias, sortOrderColumn)); tableAlias, sortOrderColumn, columnAlias, sortOrderColumn));
} }
if(attribute.isGrouping()) {
if(attribute.isNullAttribute()) {
columns.add(String.format(1 + " AS g_%s_%s", columnAlias, sortOrderColumn));
} else {
columns.add(String.format("grouping(%s.%s) AS g_%s_%s",
tableAlias, sortOrderColumn, columnAlias, sortOrderColumn));
}
}
} }
} }
return columns.toString(); return columns.toString();
@ -222,20 +230,55 @@ public class SQLGenerator {
} }
public String selectMeasure(ColumnElement columnElement) { public String selectMeasure(ColumnElement columnElement) {
String factTableTablename = reportMetadata.factTable.getTablename(); String factTableTablename = columnElement.measure.factTableName;
StringBuilder measureSelect = new StringBuilder(); StringBuilder measureSelect = new StringBuilder();
// TODO document
Measure measure = columnElement.measure; Measure measure = columnElement.measure;
measureSelect.append(getMeasureTablePart(factTableTablename, measure, reportMetadata.leftDimensionAttributes));//todo topdimen hinzufügen if(measure.isNullMeasure) {
measureSelect.append("null::bigint AS \"col" + columnElement.columnNumber + "\"");
return measureSelect.toString();
}
StringBuilder measurePartSelect = new StringBuilder();
measurePartSelect.append(getMeasureTablePart(factTableTablename, measure, reportMetadata.leftDimensionAttributes));//todo topdimen hinzufügen
if ( measure.filterCondition != null ) { if ( measure.filterCondition != null ) {
// if there exists a filter condition for a specific measure, prepend it to the column filter condition // if there exists a filter condition for a specific measure, prepend it to the column filter condition
measureSelect.append(formatSql+ "FILTER (WHERE " + measure.filterCondition); measurePartSelect.append(formatSql+ "FILTER (WHERE " + measure.filterCondition);
if (columnElement.dimensionAttributeFilter != null) { if (columnElement.dimensionAttributeFilter != null) {
measureSelect.append(" AND " + columnElement.dimensionAttributeFilter); measurePartSelect.append(" AND " + columnElement.dimensionAttributeFilter);
} }
measureSelect.append(")"); measurePartSelect.append(")");
} else if (columnElement.dimensionAttributeFilter != null) { } else if (columnElement.dimensionAttributeFilter != null) {
measureSelect.append(formatSql + "FILTER (WHERE " + columnElement.dimensionAttributeFilter + ")"); measurePartSelect.append(formatSql + "FILTER (WHERE " + columnElement.dimensionAttributeFilter + ")");
} }
//boolean skip = false;
if(!measure.attributesNotInGrain.isEmpty()) {
if(reportMetadata.isOuter) {
measureSelect.append(measurePartSelect);
//for (String attribute : measure.attributesNotInGrain) {
// measureSelect.append("null as " + attribute);
//}
} else {
StringJoiner joiner = new StringJoiner(" AND ");
for (String attribute : measure.attributesNotInGrain) {
joiner.add("GROUPING(" + attribute + ") = 1 ");
}
measureSelect.append(" CASE WHEN ");
measureSelect.append(joiner);
measureSelect.append(" THEN ");
measureSelect.append(measurePartSelect);
measureSelect.append(" END ");
}
} else {
measureSelect.append(measurePartSelect);
}
//if (measureSelect.length() != 0 && !skip) {
if (measureSelect.length() != 0) { if (measureSelect.length() != 0) {
measureSelect.append(" AS \"col" + columnElement.columnNumber + "\""); measureSelect.append(" AS \"col" + columnElement.columnNumber + "\"");
} }
@ -244,28 +287,65 @@ public class SQLGenerator {
public String buildJoinSection() { public String buildJoinSection() {
StringBuilder statement = new StringBuilder(); StringBuilder statement = new StringBuilder();
// left join (SELECT classification_id, nomination_id
// FROM (SELECT * FROM presentation.fact_prize) AS fact_prize) fact_prize
// on fact_prize.classification_id = fact_publication.classification_id
for (SecondaryFacttable secondaryFacttable : reportMetadata.secondaryFacttables) {
if(secondaryFacttable.join.equals("union")) {
continue;
}
FactTable factTable = secondaryFacttable.factTable;
String joinType = "";
if(secondaryFacttable.join.equals("inner")) {
joinType = "INNER JOIN";
} else if(secondaryFacttable.join.equals("left")) {
joinType = "LEFT JOIN";
} else if(secondaryFacttable.join.equals("union")) {
joinType = "FULL OUTER JOIN";
} else {
throw new IllegalArgumentException("illegal join type");
}
statement.append(" " + joinType + " (SELECT DISTINCT ");
Set<String> uniqueColumns = new LinkedHashSet<>();
for (JoinCriteria criteria : secondaryFacttable.joinCriterias) {
uniqueColumns.add(criteria.secondaryDimension.getJoincolumn());
}
for (Measure measure : secondaryFacttable.measures) {
uniqueColumns.add(measure.getColumnname());
}
String joinedColumns = String.join(", ", uniqueColumns);
statement.append(joinedColumns + " FROM presentation."
+ factTable.getTablename() + ") AS " + factTable.getTablename());
StringJoiner joiner = new StringJoiner(" AND ");
for (JoinCriteria rolePlayingDimension : secondaryFacttable.joinCriterias) {
joiner.add(
factTable.getTablename() + "."
+ rolePlayingDimension.secondaryDimension.getJoincolumn()
+ " = " + reportMetadata.factTable.getTablename()
+ "." + rolePlayingDimension.leadingDimension.getJoincolumn()
);
}
statement.append(" ON " + joiner.toString());
}
for (DimensionAttribute attr : reportMetadata.getUniqueDimensionAttributes()) { for (DimensionAttribute attr : reportMetadata.getUniqueDimensionAttributes()) {
String joinColumn = "id"; String joinColumn = "id";
if( attr.getDimIdJoinColumn() != null if( attr.getDimIdJoinColumn() != null
&& !attr.getDimIdJoinColumn().isBlank()) { && !attr.getDimIdJoinColumn().isBlank()) {
// Hierarchy dimension models must always be joined on an id column.
// See the "hierarchy_dim.sql" dbt macro for implementation details.
// For other models, the default join column can be customized in the metadata JSON files
// using the "id_column" attribute.
joinColumn = attr.getDimIdJoinColumn(); joinColumn = attr.getDimIdJoinColumn();
} }
String dimensionTable = attr.getTablename(); String dimensionTable = attr.getTablename();
boolean isTopAttribute = reportMetadata.topDimensionAttributes.contains(attr);
if(attr.isHierarchy() && !isTopAttribute) {
// Hierarchy dimension tables use a dedicated join suffix.
// For example, dim_orgunit is joined as dim_orgunit_hierarchy.
// This hierarchy table contains all node paths in the hierarchy tree.
// For additional details, see the "hierarchy_dim.sql" macro.
dimensionTable += HIERARCHY_MODEL_SUFFIX;
}
String join = String.format( String join = String.format(
" JOIN " + presentationSchema + ".%s AS %s ON %s.%s = %s.%s", " JOIN " + presentationSchema + ".%s AS %s ON %s.%s = %s.%s",
dimensionTable, dimensionTable,
@ -300,29 +380,7 @@ public class SQLGenerator {
StringJoiner groups = new StringJoiner(" AND "); StringJoiner groups = new StringJoiner(" AND ");
for (Filter filter : reportMetadata.filters) { for (Filter filter : reportMetadata.filters) {
groups.add(filter.dimensionTableAlias + "." + filter.columnname + " IN (" + filter.getValues() + ")");
if(reportMetadata.isHierarchyFilter(filter)) {
StringBuilder resultBuilder = new StringBuilder();
for (int i = reportMetadata.minBridgeLvl; i < reportMetadata.maxBridgeLvl; i++) {
resultBuilder
.append(filter.dimensionTableAlias)
.append(".ancestor_")
.append(filter.columnname)
.append('[').append(i).append("] IN (")
.append(filter.getValues())
.append(')');
if (i < reportMetadata.maxBridgeLvl - 1) {
resultBuilder.append(" OR ");
}
}
if(!resultBuilder.isEmpty()) {
groups.add(resultBuilder.toString());
}
} else {
groups.add(filter.dimensionTableAlias + "." + filter.columnname + " IN (" + filter.getValues() + ")");
}
} }
statement.append(groups.toString()); statement.append(groups.toString());
@ -336,27 +394,29 @@ public class SQLGenerator {
if(reportMetadata.leftDimensionAttributes == null || reportMetadata.leftDimensionAttributes.size() <= 0) { if(reportMetadata.leftDimensionAttributes == null || reportMetadata.leftDimensionAttributes.size() <= 0) {
return ""; return "";
} }
StringBuilder statement = new StringBuilder("GROUP BY ROLLUP ("); StringBuilder statement = new StringBuilder("GROUP BY GROUPING SETS (");
StringJoiner groups = new StringJoiner(", "); StringJoiner groups = new StringJoiner(", ");
for (DimensionAttribute attr : reportMetadata.leftDimensionAttributes) {
if(attr.isHierarchy()) { for (int i = 0; i < reportMetadata.leftDimensionAttributes.size(); i++) {
// TODO: what is happening here? DimensionAttribute a = reportMetadata.leftDimensionAttributes.get(i);
int numOfHierarchyAttributes = reportMetadata.getHierarchyAttributes().size(); if(a.isNullAttribute()) {
for (int i = 0; i < numOfHierarchyAttributes; i++) { continue;
for (int j = 0; j < reportMetadata.maxBridgeLvl; j++) { }
if(j < reportMetadata.minBridgeLvl) { StringJoiner group = new StringJoiner(", ");
continue; for (int j = 0; j < reportMetadata.leftDimensionAttributes.size() - i; j++) {
} DimensionAttribute attr = reportMetadata.leftDimensionAttributes.get(j);
groups.add("col"+(j + (i * reportMetadata.maxBridgeLvl))); if(attr.isNullAttribute()) {
} continue;
}
} else {
groups.add(attr.getDimensionTableAlias() + "." + attr.getColumnname());
if(attr.getSortOrderColumn() != null) {
groups.add(attr.getDimensionTableAlias() + "." + attr.getSortOrderColumn());
} }
group.add(attr.getDimensionTableAlias() + "." + attr.getColumnname());
if(attr.getSortOrderColumn() != null) {
group.add(attr.getDimensionTableAlias() + "." + attr.getSortOrderColumn());
}
} }
} groups.add("("+group.toString()+")");
}
groups.add("()");
statement.append(groups.toString()); statement.append(groups.toString());
if(groups.length() == 0) { if(groups.length() == 0) {
return ""; return "";
@ -369,10 +429,7 @@ public class SQLGenerator {
StringJoiner orderCols = new StringJoiner(", ", " ORDER BY ", ""); StringJoiner orderCols = new StringJoiner(", ", " ORDER BY ", "");
orderCols.setEmptyValue(""); orderCols.setEmptyValue("");
for (DimensionAttribute attr : reportMetadata.leftDimensionAttributes) { for (DimensionAttribute attr : reportMetadata.leftDimensionAttributes) {
if(attr.isHierarchy()) { if(attr.isNullAttribute()) {
for (int i = reportMetadata.minBridgeLvl; i < reportMetadata.maxBridgeLvl; i++) {
orderCols.add("col" + i);
}
continue; continue;
} }
if(attr.getSortOrderColumn() != null) { if(attr.getSortOrderColumn() != null) {

124
src/de/superx/bianalysis/sqlgeneration/SQLGeneratorDrillAcross.java

@ -0,0 +1,124 @@
package de.superx.bianalysis.sqlgeneration;
import java.util.HashMap;
import java.util.List;
import java.util.StringJoiner;
import de.superx.bianalysis.ColumnElement;
import de.superx.bianalysis.ColumnElementBuilder;
import de.superx.bianalysis.ReportMetadata;
import de.superx.bianalysis.metadata.Identifier;
import de.superx.bianalysis.models.DimensionAttribute;
public class SQLGeneratorDrillAcross {
private ReportMetadata reportMetadata;
private List<ColumnElement> columnElements;
private HashMap<String, ReportMetadata> factMetadatas;
public SQLGeneratorDrillAcross(Identifier leadingFactId, HashMap<String, ReportMetadata> factMetadatas) {
this.reportMetadata = factMetadatas.get(leadingFactId.composedId);
this.factMetadatas = factMetadatas;
this.columnElements = ColumnElementBuilder.buildColumnElements(reportMetadata);
}
public String buildFormattedSqlStatement() {
String sql = "WITH ";
StringJoiner cteJoiner = new StringJoiner(", ");
Identifier leadingFactId = reportMetadata.factTable.getId();
ReportMetadata meta = factMetadatas.get(leadingFactId.composedId);
String cteName = meta.factTable.getTablename() + "_aggregated";
List<ColumnElement> colElements = ColumnElementBuilder.buildColumnElements(meta);
SQLGenerator gen = new SQLGenerator(meta, colElements);
cteJoiner.add(cteName + " AS (" + gen.buildFormattedSqlStatement() + ")");
for (String factId : factMetadatas.keySet()) {
if(factId.equals(leadingFactId.composedId)) {
continue;
}
meta = factMetadatas.get(factId);
cteName = meta.factTable.getTablename() + "_aggregated";
colElements = ColumnElementBuilder.buildColumnElements(meta);
gen = new SQLGenerator(meta, colElements);
cteJoiner.add(cteName + " AS (" + gen.buildFormattedSqlStatement() + ")");
}
sql += cteJoiner.toString();
String combiningSQL = "SELECT ";
StringJoiner joinerCol = new StringJoiner(", ");
for (DimensionAttribute a : reportMetadata.leftDimensionAttributes) {
String columnName = a.getColumnname();
String sortOrder = a.getSortOrderColumn();
joinerCol.add(columnName);
if(sortOrder != null && !sortOrder.isBlank()) {
joinerCol.add(sortOrder);
}
}
for (ColumnElement columnElement : columnElements) {
joinerCol.add("SUM(col" + columnElement.columnNumber + ") AS col" + columnElement.columnNumber);
}
combiningSQL += joinerCol.toString();
StringJoiner subSelectCombiner = new StringJoiner(" UNION ALL ");
for (String factId : factMetadatas.keySet()) {
ReportMetadata tmp = factMetadatas.get(factId);
String factCTE = tmp.factTable.getTablename() + "_aggregated";
String aggSelect = "SELECT ";
StringJoiner colJoiner = new StringJoiner(", ");
for (DimensionAttribute a : tmp.leftDimensionAttributes) {
String columnName = a.getColumnname();
String columnAlias = a.getDimensionColumnAlias();
String sortOrder = a.getSortOrderColumn();
colJoiner.add(columnAlias + " AS " + columnName);
if(a.isGrouping()) {
colJoiner.add("g_" + columnAlias + " AS g_" + columnName);
}
if(sortOrder != null && !sortOrder.isBlank()) {
colJoiner.add(columnAlias + "_" + sortOrder + " AS " + sortOrder);
if(a.isGrouping()) {
colJoiner.add("g_" + columnAlias + "_" + sortOrder + " AS g_" + sortOrder);
}
}
}
for (ColumnElement columnElement : columnElements) {
colJoiner.add("col" + columnElement.columnNumber);
}
aggSelect += colJoiner.toString();
aggSelect += " FROM " + factCTE;
subSelectCombiner.add(aggSelect);
}
combiningSQL += " FROM ( " + subSelectCombiner.toString() + ") x ";
combiningSQL += "GROUP BY ";
StringJoiner groupByCols = new StringJoiner(", ");
for (DimensionAttribute a : reportMetadata.leftDimensionAttributes) {
String columnName = a.getColumnname();
String sortOrder = a.getSortOrderColumn();
groupByCols.add(columnName);
if(a.isGrouping()) {
groupByCols.add("g_" + columnName);
}
if(sortOrder != null && !sortOrder.isBlank()) {
groupByCols.add(sortOrder);
if(a.isGrouping()) {
groupByCols.add("g_" + sortOrder);
}
}
}
combiningSQL += groupByCols.toString();
return sql + " " + combiningSQL;
}
}

14
src/de/superx/bianalysis/sqlgeneration/SQLGeneratorTotals.java

@ -12,11 +12,11 @@ public class SQLGeneratorTotals {
public SQLGeneratorTotals() {} public SQLGeneratorTotals() {}
public static String buildTotalsColumnSQL(SQLGenerator generator, int maxBridgeLvlOfReport) { public static String buildTotalsColumnSQL(SQLGenerator generator) {
ReportMetadata metadata = generator.reportMetadata; ReportMetadata metadata = generator.reportMetadata;
StringBuilder statement = new StringBuilder(); StringBuilder statement = new StringBuilder();
statement.append("SELECT "); statement.append("SELECT ");
statement.append(buildSelectSectionForTotalsCol(generator, metadata, maxBridgeLvlOfReport)); statement.append(buildSelectSectionForTotalsCol(generator, metadata));
statement.append(generator.formatSql + "FROM presentation." + metadata.factTable.getTablename() ); statement.append(generator.formatSql + "FROM presentation." + metadata.factTable.getTablename() );
statement.append(generator.buildJoinSection()); statement.append(generator.buildJoinSection());
statement.append(buildFilterSectionForTotalsCol(generator, metadata)); statement.append(buildFilterSectionForTotalsCol(generator, metadata));
@ -40,11 +40,11 @@ public class SQLGeneratorTotals {
return where.toString(); return where.toString();
} }
private static String buildSelectSectionForTotalsCol(SQLGenerator generator, ReportMetadata metadata, int maxBridgeLvlOfReport) { private static String buildSelectSectionForTotalsCol(SQLGenerator generator, ReportMetadata metadata) {
StringJoiner columns = new StringJoiner(", "); StringJoiner columns = new StringJoiner(", ");
columns.add(generator.selectDimensionAttributes()); columns.add(generator.selectDimensionAttributes());
//columns.add(metadata.aggregationLvl + " AS aggregationLvl"); //columns.add(metadata.aggregationLvl + " AS aggregationLvl");
int numCols = generator.reportMetadata.maxBridgeLvl; int numCols = 0;
for (Measure measure : metadata.measures) { for (Measure measure : metadata.measures) {
String value = generator.getMeasureTablePart(metadata.factTable.getTablename(), measure, metadata.leftDimensionAttributes); String value = generator.getMeasureTablePart(metadata.factTable.getTablename(), measure, metadata.leftDimensionAttributes);
if ( measure.filterCondition != null ) { if ( measure.filterCondition != null ) {
@ -68,17 +68,13 @@ public class SQLGeneratorTotals {
return joiner.toString(); return joiner.toString();
} }
public static String generateTotalsColumnSQL(ReportMetadata metadata) {
return generateTotalsColumnSQL(metadata, null);
}
public static String generateTotalsColumnSQL(ReportMetadata metadata, String presentationSchema) { public static String generateTotalsColumnSQL(ReportMetadata metadata, String presentationSchema) {
if(metadata.topDimensionAttributes.isEmpty()) { if(metadata.topDimensionAttributes.isEmpty()) {
return ""; return "";
} }
SQLGenerator generator = new SQLGenerator(metadata, null, presentationSchema); SQLGenerator generator = new SQLGenerator(metadata, null, presentationSchema);
String finalSQL = buildTotalsColumnSQL(generator, metadata.maxBridgeLvl) String finalSQL = buildTotalsColumnSQL(generator) + generator.buildOrderBySection();
+ generator.buildOrderBySection();
return finalSQL; return finalSQL;
} }

22
src/de/superx/bin/AbstractWebserviceClient.java

@ -16,12 +16,8 @@ import java.net.PasswordAuthentication;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.StandardOpenOption; import java.nio.file.StandardOpenOption;
import java.util.logging.FileHandler; import org.slf4j.Logger;
import java.util.logging.Handler; import org.slf4j.LoggerFactory;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.xml.soap.MessageFactory; import javax.xml.soap.MessageFactory;
@ -58,7 +54,7 @@ public class AbstractWebserviceClient {
private XMLInputFactory factory = XMLInputFactory.newInstance(); private XMLInputFactory factory = XMLInputFactory.newInstance();
protected String auth = null; protected String auth = null;
protected final static String DATUMSPATTERN = "(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)"; protected final static String DATUMSPATTERN = "(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)";
protected static final Logger logger = Logger.getLogger("wc"); protected static final Logger logger = LoggerFactory.getLogger(AbstractWebserviceClient.class);
// String test="PVC-U T-St&#xFC;ck 90&#xB0;, 3fach Klebemu&#xDBC0;&#xDC01;e"; // String test="PVC-U T-St&#xFC;ck 90&#xB0;, 3fach Klebemu&#xDBC0;&#xDC01;e";
private static final Pattern INVALID_XML_PATTERN=Pattern.compile("[^\\u0009\\u000A\\u000D\\u0020-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFF]+"); private static final Pattern INVALID_XML_PATTERN=Pattern.compile("[^\\u0009\\u000A\\u000D\\u0020-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFF]+");
private static final String XSLT_REMOVE_NAMESPACE = "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">\n" + private static final String XSLT_REMOVE_NAMESPACE = "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">\n" +
@ -171,8 +167,7 @@ public class AbstractWebserviceClient {
PrintWriter pw = new PrintWriter(swException); PrintWriter pw = new PrintWriter(swException);
e.printStackTrace(pw); e.printStackTrace(pw);
Logger.getLogger("wc") logger.error(" Problem bei Aufruf von " + url + "\n" + soapxml + "\n" + swException.toString());
.severe(" Problem bei Aufruf von " + url + "\n" + soapxml + "\n" + swException.toString());
attempt++; attempt++;
} }
@ -233,12 +228,13 @@ public class AbstractWebserviceClient {
// System.out.println(LogDomainConstants.HTTP_CONN_DOMAIN); // System.out.println(LogDomainConstants.HTTP_CONN_DOMAIN);
// in OpenJDK und geergänzenden jars nicht mehr aktiv // in OpenJDK und geergänzenden jars nicht mehr aktiv
// sicherheitshalber // sicherheitshalber
/*
try { try {
Logger.getLogger("com.sun.xml.internal.messaging.saaj.client.p2p", Logger.getLogger("com.sun.xml.internal.messaging.saaj.client.p2p",
"com.sun.xml.internal.messaging.saaj.client.p2p.LocalStrings").setLevel(Level.OFF); "com.sun.xml.internal.messaging.saaj.client.p2p.LocalStrings").setLevel(Level.OFF);
} catch (Exception e) { } catch (Exception e) {
} }*/
Exception exception = null; Exception exception = null;
File tmpF = File.createTempFile("soapdata", ".xml"); File tmpF = File.createTempFile("soapdata", ".xml");
while (allDone == false && attempt < 5) { while (allDone == false && attempt < 5) {
@ -274,7 +270,7 @@ public class AbstractWebserviceClient {
PrintWriter pw = new PrintWriter(swException); PrintWriter pw = new PrintWriter(swException);
e.printStackTrace(pw); e.printStackTrace(pw);
Logger.getLogger("wc").severe(" Problem bei Webservice Abruf\n" + url + "\n" + soapxml logger.error(" Problem bei Webservice Abruf\n" + url + "\n" + soapxml
+ swException.toString() + swException.toString()
+ (attempt < 4 ? " versuche erneut:\n" : " zu viele Fehlschlaege - gebe frustriert auf")); + (attempt < 4 ? " versuche erneut:\n" : " zu viele Fehlschlaege - gebe frustriert auf"));
attempt++; attempt++;
@ -485,7 +481,8 @@ public class AbstractWebserviceClient {
protected void initLogging() throws SecurityException, IOException { protected void initLogging() throws SecurityException, IOException {
//hier bewusst separates java.util.Logging für Shellaufrufe //hier bewusst separates java.util.Logging für Shellaufrufe
Handler handler = new FileHandler("WebserviceClient.log",100000*1024,1,true); /*Deaktiviert wg. SLF Logging Umstellung
* Handler handler = new FileHandler("WebserviceClient.log",100000*1024,1,true);
handler.setFormatter(new SimpleFormatter() handler.setFormatter(new SimpleFormatter()
{ {
@Override @Override
@ -503,6 +500,7 @@ public class AbstractWebserviceClient {
}); });
Logger.getLogger("wc").addHandler(handler); Logger.getLogger("wc").addHandler(handler);
logger.setLevel(Level.FINEST); logger.setLevel(Level.FINEST);
*/
} }
} }

25
src/de/superx/bin/ComponentAdminCLI.java

@ -24,8 +24,10 @@ import org.springframework.beans.BeansException;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.GenericApplicationContext; import org.springframework.context.support.GenericApplicationContext;
import de.superx.conf.ApplicationConfig;
import de.superx.job.ContainerNode; import de.superx.job.ContainerNode;
import de.superx.rest.EtlJobApi; import de.superx.rest.EtlJobApi;
import de.superx.rest.JobExecutionInfo.JobStartContext;
import de.superx.rest.model.job.Component; import de.superx.rest.model.job.Component;
import de.superx.rest.model.job.JobExecutionStatus; import de.superx.rest.model.job.JobExecutionStatus;
import de.superx.servlet.SuperXManager; import de.superx.servlet.SuperXManager;
@ -341,18 +343,11 @@ public class ComponentAdminCLI {
try (GenericApplicationContext context = createContext()) { try (GenericApplicationContext context = createContext()) {
initSxPools(); initSxPools();
EtlJobApi componentApi = context.getBean(EtlJobApi.class); EtlJobApi componentApi = context.getBean(EtlJobApi.class);
Long jobStartStatus;
for (String jobId : jobIds) { for (String jobId : jobIds) {
try { try {
currentJobId = jobId; currentJobId = jobId;
if (isHauptladeroutine(jobId, componentApi)) { Long jobExecutionId = componentApi.createJobWith(jobId, JobStartContext.KOMMANDOZEILE);
jobStartStatus = componentApi.complete(jobId); handleStartResult(jobExecutionId, componentApi);
} else if (isLoadTransform(jobId, componentApi)) {
jobStartStatus = componentApi.load(jobId);
} else {
jobStartStatus = componentApi.executeJob(null, jobId);
}
handleStartResult(jobStartStatus, componentApi);
} catch (Exception e) { } catch (Exception e) {
logger.error("ERROR executing job " + jobId, e); logger.error("ERROR executing job " + jobId, e);
} }
@ -394,16 +389,6 @@ public class ComponentAdminCLI {
be.printStackTrace(); be.printStackTrace();
} }
private static boolean isHauptladeroutine(String comp, EtlJobApi etlJob) {
Component comp_meta = etlJob.getComponentAndConnectorDetails(comp);
return comp_meta != null && comp_meta.isDatabaseConnected();
}
private static boolean isLoadTransform(String comp, EtlJobApi etlJob) {
Component comp_meta = etlJob.getComponentAndConnectorDetails(comp);
return comp_meta !=null && !comp_meta.isDatabaseConnected();
}
private static void printAllJobs() { private static void printAllJobs() {
try (GenericApplicationContext context = createContext()) { try (GenericApplicationContext context = createContext()) {
EtlJobApi etlJob = context.getBean(EtlJobApi.class); EtlJobApi etlJob = context.getBean(EtlJobApi.class);
@ -433,6 +418,8 @@ public class ComponentAdminCLI {
EntityJobDescriptionSource entityJobDescriptionSource = APPLICATION_CONTEXT.getBean(EntityJobDescriptionSource.class); EntityJobDescriptionSource entityJobDescriptionSource = APPLICATION_CONTEXT.getBean(EntityJobDescriptionSource.class);
etlJob.setJobDescriptionSource(entityJobDescriptionSource); etlJob.setJobDescriptionSource(entityJobDescriptionSource);
} }
HisInOneConfiguration conf = new HisInOneConfiguration();
ApplicationConfig.readApplicationProperties();
return APPLICATION_CONTEXT; return APPLICATION_CONTEXT;
} }

12
src/de/superx/bin/DoShutdown.java

@ -8,9 +8,8 @@ import java.sql.Connection;
import java.sql.DatabaseMetaData; import java.sql.DatabaseMetaData;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Statement; import java.sql.Statement;
import java.util.logging.LogManager; import org.slf4j.Logger;
import java.util.logging.Logger; import org.slf4j.LoggerFactory;
import de.memtext.util.GetOpts; import de.memtext.util.GetOpts;
@ -52,7 +51,7 @@ public class DoShutdown {
String outfile = ""; String outfile = "";
Logger logger = (Logger) Logger.getLogger(DoShutdown.class.toString()); Logger logger = LoggerFactory.getLogger(DoShutdown.class);
@ -106,10 +105,7 @@ public class DoShutdown {
throw new IOException("Datei nicht gefunden: " + logfile); throw new IOException("Datei nicht gefunden: " + logfile);
} }
FileInputStream ins = new FileInputStream(logfile); FileInputStream ins = new FileInputStream(logfile);
LogManager MyLogManager = java.util.logging.LogManager.getLogManager();
MyLogManager.readConfiguration(ins);
logfile = MyLogManager.getProperty(".level");
logger.info("Using Loggging-Level " + logfile);
} }
/* /*

26
src/de/superx/bin/Doquery.java

@ -13,9 +13,8 @@ import java.sql.ResultSetMetaData;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Statement; import java.sql.Statement;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import java.util.logging.LogManager; import org.slf4j.Logger;
import java.util.logging.Logger; import org.slf4j.LoggerFactory;
import de.superx.bin.Doschema.Format; import de.superx.bin.Doschema.Format;
/** /**
@ -60,9 +59,9 @@ public class Doquery {
private static String outfile = ""; private static String outfile = "";
private static Logger logger = (Logger) Logger.getLogger(Doquery.class.toString()); private static Logger logger = LoggerFactory.getLogger(Doquery.class);
private static String usage = "-------------------------------------\nGebrauch: java de.superx.SimpleTransform -logger=<<Pfad zu logging.properties>> -IN=<<xml-Datei>> -XSL=<<xsl-Datei>> -method=<<xml |html|text>>(optional) -param=<<Parameter>>(optional) -OUT=<<Ausgabedatei>>(optional) \n---------------------------------------------------"; private static String usage = "-------------------------------------\nGebrauch: java de.superx.bin.Doquery <<Pfad zu logging.properties>> <<Pfad zu den db.properties>> \"<<sql-String>>\" \n---------------------------------------------------";
public static void go(String args[]) throws ClassNotFoundException, FileNotFoundException, IOException, SQLException, IllegalArgumentException { public static void go(String args[]) throws ClassNotFoundException, FileNotFoundException, IOException, SQLException, IllegalArgumentException {
if (args.length > 0) { if (args.length > 0) {
@ -77,15 +76,12 @@ public class Doquery {
} }
FileInputStream ins = new FileInputStream(logfile); FileInputStream ins = new FileInputStream(logfile);
LogManager MyLogManager = java.util.logging.LogManager.getLogManager();
MyLogManager.readConfiguration(ins);
logfile = MyLogManager.getProperty(".level");
logger.info("Using Loggging-Level " + logfile);
String _sql = ""; String _sql = "";
if (args.length > 1) { if (args.length > 1) {
dbpropfile = args[1].trim(); dbpropfile = args[1].trim();
} else { } else {
logger.severe("Mindestens drei Parameter (Pfad zu den logger.properties, Pfad zu den db.properties, sql-String) erfoderlich"); logger.error("Mindestens drei Parameter (Pfad zu den logger.properties, Pfad zu den db.properties, sql-String) erfoderlich");
System.exit(1); System.exit(1);
} }
if (args.length > 2) { if (args.length > 2) {
@ -98,7 +94,7 @@ public class Doquery {
} }
} else { } else {
logger.severe("Mindestens drei Parameter (Pfad zu den logger.properties, Pfad zu den db.properties, sql-String) erfoderlich"); logger.error("Mindestens drei Parameter (Pfad zu den logger.properties, Pfad zu den db.properties, sql-String) erfoderlich");
System.exit(1); System.exit(1);
} }
if (args.length > 3) { if (args.length > 3) {
@ -124,7 +120,7 @@ public class Doquery {
f1.write(""); f1.write("");
f1.close(); f1.close();
} catch (IOException e) { } catch (IOException e) {
logger.severe("Fehler beim Erstellen der Datei " + outfile); logger.error("Fehler beim Erstellen der Datei " + outfile);
} }
} }
getConnection(logger, dbpropfile); getConnection(logger, dbpropfile);
@ -208,7 +204,7 @@ public class Doquery {
} }
} catch (SQLException l_se) { } catch (SQLException l_se) {
//do something useful here //do something useful here
logger.severe("Fehler beim SQL " + _sql); logger.error("Fehler beim SQL " + _sql);
l_se.printStackTrace(); l_se.printStackTrace();
} }
st = myDb.createStatement(); st = myDb.createStatement();
@ -274,7 +270,7 @@ public class Doquery {
public static void getConnection(Logger logger, String propFile) throws SQLException { public static void getConnection(Logger logger, String propFile) throws SQLException {
myConnection = new SxConnection(); myConnection = new SxConnection();
myConnection.setPropfile(propFile); myConnection.setPropfile(propFile);
logger.config("Starting Connection..."); logger.info("Starting Connection...");
try { try {
myDb = myConnection.getConnection(); myDb = myConnection.getConnection();
st = myDb.createStatement(); st = myDb.createStatement();
@ -286,7 +282,7 @@ public class Doquery {
//ResultSet.CONCUR_UPDATABLE); //ResultSet.CONCUR_UPDATABLE);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
logger.severe("Keine DB-Verbindung: " + e.toString()); logger.error("Keine DB-Verbindung: " + e.toString());
throw new SQLException("Keine DB-Verbindung: " + e.toString()); throw new SQLException("Keine DB-Verbindung: " + e.toString());
} }
db_driver = myConnection.m_DriverClass.stringValue(); db_driver = myConnection.m_DriverClass.stringValue();

16
src/de/superx/bin/Doschema.java

@ -9,9 +9,8 @@ import java.sql.Connection;
import java.sql.DatabaseMetaData; import java.sql.DatabaseMetaData;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Statement; import java.sql.Statement;
import java.util.logging.LogManager; import org.slf4j.Logger;
import java.util.logging.Logger; import org.slf4j.LoggerFactory;
import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerException;
import de.memtext.util.GetOpts; import de.memtext.util.GetOpts;
@ -60,8 +59,7 @@ public class Doschema {
Format outFormat = Format.xml; Format outFormat = Format.xml;
Logger logger = (Logger) Logger.getLogger(Doschema.class.toString()); Logger logger = LoggerFactory.getLogger(Doschema.class);
private static String usage = "-------------------------------------\n" private static String usage = "-------------------------------------\n"
+ "Gebrauch: java de.superx.bin.Doschema -logger:<<Pfad zu logging.properties>> -dbproperties:<<Pfad zu db.properties>> " + "Gebrauch: java de.superx.bin.Doschema -logger:<<Pfad zu logging.properties>> -dbproperties:<<Pfad zu db.properties>> "
+ "-table:<Tabelle> -outFormat:<Ausgabeformat (xml | HIS | pg | ids | ansi ) -outfile:<Ausgabedatei>(optional) \n---------------------------------------------------"; + "-table:<Tabelle> -outFormat:<Ausgabeformat (xml | HIS | pg | ids | ansi ) -outfile:<Ausgabedatei>(optional) \n---------------------------------------------------";
@ -99,15 +97,11 @@ public class Doschema {
throw new IOException("Datei nicht gefunden: " + logfile); throw new IOException("Datei nicht gefunden: " + logfile);
} }
FileInputStream ins = new FileInputStream(logfile); FileInputStream ins = new FileInputStream(logfile);
LogManager MyLogManager = java.util.logging.LogManager.getLogManager(); logger.info("Getting Schema.");
MyLogManager.readConfiguration(ins);
logfile = MyLogManager.getProperty(".level");
logger.info("Using Loggging-Level " + logfile);
logger.config("Getting Schema.");
SxJdbcClient myClient = new SxJdbcClient(logger, dbpropfile); SxJdbcClient myClient = new SxJdbcClient(logger, dbpropfile);
// OutputStream out=new OutputStream(); // OutputStream out=new OutputStream();
// OutputStreamWriter Outwriter=new OutputStreamWriter(out); // OutputStreamWriter Outwriter=new OutputStreamWriter(out);
logger.config("Tabellenkatalog für " + tabelle); logger.info("Tabellenkatalog für " + tabelle);
String zs = ""; String zs = "";
zs = "<?xml version='1.0' encoding='" + SqlStringUtils.getEncoding() + "'?>" + "\n"; zs = "<?xml version='1.0' encoding='" + SqlStringUtils.getEncoding() + "'?>" + "\n";
// zs+="<table name=\""+tabelle+"\">\n"; // zs+="<table name=\""+tabelle+"\">\n";

41
src/de/superx/bin/Dosql.java

@ -10,9 +10,8 @@ import java.sql.Connection;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.Statement; import java.sql.Statement;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import java.util.logging.LogManager; import org.slf4j.Logger;
import java.util.logging.Logger; import org.slf4j.LoggerFactory;
import de.memtext.util.GetOpts; import de.memtext.util.GetOpts;
import de.memtext.util.GetOpts.Options; import de.memtext.util.GetOpts.Options;
import de.superx.bin.Doschema.Format; import de.superx.bin.Doschema.Format;
@ -44,8 +43,7 @@ public class Dosql {
private static String header = "false"; private static String header = "false";
private static String logfile = "../conf/logging.properties";
private static String tabelle = ""; private static String tabelle = "";
private static String dbpropfile = "../conf/db.properties"; private static String dbpropfile = "../conf/db.properties";
@ -57,13 +55,13 @@ public class Dosql {
private static String _dateiPfad = ""; private static String _dateiPfad = "";
//LogUtils logger=null; //LogUtils logger=null;
private static Logger logger = (Logger) Logger.getLogger(Dosql.class.toString()); private static Logger logger = LoggerFactory.getLogger(Dosql.class);
//static Logger logger = Logger.getLogger(dosql.class); //static Logger logger = Logger.getLogger(dosql.class);
private static String usage = "-------------------------------------\n" private static String usage = "-------------------------------------\n"
+ "Gebrauch: java de.superx.bin.Dosql -logger=<<Pfad zu logging.properties>> -dbproperties=<<Pfad zu db.properties>> " + "Gebrauch: java de.superx.bin.Dosql -dbproperties:<<Pfad zu db.properties>> "
+ "-sqlfile:<Datei mit sql-Ausdrücken> -params:<Parameter, die in sql- oder Script-Dateien ersetzt werden; Syntax:param1=wert1,param2=wert2 etc> -outFormat:<Ausgabeformat (txt | html | xml)>(optional) -delim:<delimiter> -header:<mit Spaltenüberschriften (true | false)>(optional) -outfile:<Ausgabedatei>(optional) \n---------------------------------------------------"; + "-sqlfile:<Datei mit sql-Ausdrücken> -params:<Parameter, die in sql- oder Script-Dateien ersetzt werden; Syntax:param1=wert1,param2=wert2 etc> -outFormat:<Ausgabeformat (txt | html | xml)>(optional) -delim:<delimiter> -header:<mit Spaltenüberschriften (true | false)>(optional) -outfile:<Ausgabedatei>(optional) \n---------------------------------------------------";
/* /*
@ -82,7 +80,7 @@ public class Dosql {
try { try {
execute(args); execute(args);
} catch (Exception e) { } catch (Exception e) {
logger.severe("Fehler beim sql-Script: " + _dateiPfad + " " + e.toString()); logger.error("Fehler beim sql-Script: " + _dateiPfad + " " + e.toString());
e.printStackTrace(); e.printStackTrace();
System.exit(1); System.exit(1);
} }
@ -93,7 +91,7 @@ public class Dosql {
String params = ""; String params = "";
GetOpts.setOpts(args); GetOpts.setOpts(args);
String isdrin = GetOpts.isAllRequiredOptionsPresent(new Options[]{Options.opt_logger,Options.opt_dbprops,Options.opt_sql}); String isdrin = GetOpts.isAllRequiredOptionsPresent(new Options[]{Options.opt_dbprops,Options.opt_sql});
if (isdrin != null) { if (isdrin != null) {
System.err.println("Folgende Optionen fehlen: " + isdrin); System.err.println("Folgende Optionen fehlen: " + isdrin);
System.err.println(usage); System.err.println(usage);
@ -101,7 +99,6 @@ public class Dosql {
} }
//GetOpts myOpts=new GetOpts(); //GetOpts myOpts=new GetOpts();
if (GetOpts.isPresent(Options.opt_logger)) logfile = GetOpts.getValue(Options.opt_logger);
if (GetOpts.isPresent(Options.opt_dbprops)) dbpropfile = GetOpts.getValue(Options.opt_dbprops); if (GetOpts.isPresent(Options.opt_dbprops)) dbpropfile = GetOpts.getValue(Options.opt_dbprops);
if (GetOpts.isPresent(Options.opt_sql)) _dateiPfad = GetOpts.getValue(Options.opt_sql); if (GetOpts.isPresent(Options.opt_sql)) _dateiPfad = GetOpts.getValue(Options.opt_sql);
//if (GetOpts.isPresent("-outFormat")) outFormat = GetOpts.getValue("-outFormat"); //if (GetOpts.isPresent("-outFormat")) outFormat = GetOpts.getValue("-outFormat");
@ -116,19 +113,9 @@ public class Dosql {
if (delim.equals("")) delim = "^"; //default Delimiter if (delim.equals("")) delim = "^"; //default Delimiter
//logger.initRaw(dosql.class)
//PropertyConfigurator.configure(logfile);
File f = new File(logfile);
if (!f.exists()) {
throw new IOException("Datei nicht gefunden: " + logfile);
}
FileInputStream ins = new FileInputStream(logfile);
LogManager MyLogManager = java.util.logging.LogManager.getLogManager();
MyLogManager.readConfiguration(ins);
logfile = MyLogManager.getProperty(".level");
logger.info("Using Loggging-Level " + logfile);
f = new File(_dateiPfad); File f = new File(_dateiPfad);
if (!f.exists()) { if (!f.exists()) {
throw new IOException("Datei nicht gefunden: " + _dateiPfad); throw new IOException("Datei nicht gefunden: " + _dateiPfad);
} }
@ -149,10 +136,10 @@ public class Dosql {
sql += System.getProperty("line.separator") + text.trim(); sql += System.getProperty("line.separator") + text.trim();
} }
in.close(); in.close();
if (sql.toLowerCase().indexOf("<xupdate>") > -1) { SxConnection myConnection = new SxConnection();
SxConnection myConnection = new SxConnection(); myConnection.setPropfile(dbpropfile);
myConnection.setPropfile(dbpropfile); Connection con = myConnection.getConnection();
Connection con = myConnection.getConnection(); if (sql.toLowerCase().indexOf("<xupdate>") > -1) {
new XUpdater().execute(con, myConnection.getDatabaseAbbr(), sql, logger); new XUpdater().execute(con, myConnection.getDatabaseAbbr(), sql, logger);
} else { } else {
@ -169,7 +156,7 @@ public class Dosql {
if (sql.startsWith("\"")) sql = sql.substring(1, sql.length()); if (sql.startsWith("\"")) sql = sql.substring(1, sql.length());
if (sql.endsWith("\"")) sql = sql.substring(0, sql.length() - 1); if (sql.endsWith("\"")) sql = sql.substring(0, sql.length() - 1);
logger.config("Inhalt der sql-Datei: \n--" + sql + "--"); logger.info("Inhalt der sql-Datei: \n--" + sql + "--");
//First the params are replaced: //First the params are replaced:
if (!params.equals("")) { if (!params.equals("")) {
if (!params.endsWith("|")) params += "|"; if (!params.endsWith("|")) params += "|";

20
src/de/superx/bin/Dostmt.java

@ -11,9 +11,8 @@ import java.sql.Connection;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Statement; import java.sql.Statement;
import java.util.logging.LogManager; import org.slf4j.Logger;
import java.util.logging.Logger; import org.slf4j.LoggerFactory;
import de.superx.bin.Doschema.Format; import de.superx.bin.Doschema.Format;
@ -47,7 +46,7 @@ public class Dostmt {
Format outFormat = Format.txt; Format outFormat = Format.txt;
//LogUtils logger=null; //LogUtils logger=null;
Logger logger = (Logger) Logger.getLogger(Dostmt.class.toString()); Logger logger = LoggerFactory.getLogger(Dostmt.class);
//static Logger logger = Logger.getLogger(dosql.class); //static Logger logger = Logger.getLogger(dosql.class);
//private ExceptionHandler exceptionHandler = new ExceptionHandler(false); //private ExceptionHandler exceptionHandler = new ExceptionHandler(false);
@ -67,22 +66,19 @@ public class Dostmt {
throw new IOException("Datei nicht gefunden: " + logfile); throw new IOException("Datei nicht gefunden: " + logfile);
} }
FileInputStream ins = new FileInputStream(logfile); FileInputStream ins = new FileInputStream(logfile);
LogManager MyLogManager = java.util.logging.LogManager.getLogManager();
MyLogManager.readConfiguration(ins);
logfile = MyLogManager.getProperty(".level");
logger.info("Using Loggging-Level " + logfile);
String _dateiPfad = ""; String _dateiPfad = "";
if (args.length > 1) { if (args.length > 1) {
dbpropfile = args[1].trim(); dbpropfile = args[1].trim();
} else { } else {
logger.severe("Mindestens drei Parameter (Pfad zu den logger.properties, Pfad zu den db.properties, Pfad zur SQL-Datei) erfoderlich"); logger.error("Mindestens drei Parameter (Pfad zu den logger.properties, Pfad zu den db.properties, Pfad zur SQL-Datei) erfoderlich");
System.exit(1); System.exit(1);
} }
if (args.length > 2) { if (args.length > 2) {
_dateiPfad = args[2].trim(); _dateiPfad = args[2].trim();
} else { } else {
logger.severe("Mindestens drei Parameter (Pfad zu den logger.properties, Pfad zu den db.properties, Pfad zur SQL-Datei) erfoderlich"); logger.error("Mindestens drei Parameter (Pfad zu den logger.properties, Pfad zu den db.properties, Pfad zur SQL-Datei) erfoderlich");
System.exit(1); System.exit(1);
} }
@ -102,7 +98,7 @@ public class Dostmt {
if (text.length() > 1) sql += System.getProperty("line.separator") + text.trim(); if (text.length() > 1) sql += System.getProperty("line.separator") + text.trim();
} }
in.close(); in.close();
logger.config("Inhalt von sql-Datei: \n" + sql); logger.info("Inhalt von sql-Datei: \n" + sql);
SxJdbcClient myClient = new SxJdbcClient(logger, dbpropfile, sql); SxJdbcClient myClient = new SxJdbcClient(logger, dbpropfile, sql);
try { try {
SxTransformer myTransformer = null; SxTransformer myTransformer = null;
@ -124,7 +120,7 @@ public class Dostmt {
logger.info("Keine Rückgabewerte aus SQL-Script"); logger.info("Keine Rückgabewerte aus SQL-Script");
myClient.close(); myClient.close();
} catch (SQLException e) { } catch (SQLException e) {
logger.severe("Fehler beim sql-Script: " + e.toString()); logger.error("Fehler beim sql-Script: " + e.toString());
System.exit(-1); System.exit(-1);
} }

52
src/de/superx/bin/ExecuteMask.java

@ -19,10 +19,8 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import java.util.logging.ConsoleHandler; import org.slf4j.Logger;
import java.util.logging.LogManager; import org.slf4j.LoggerFactory;
import java.util.logging.Logger;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
@ -106,7 +104,7 @@ public class ExecuteMask {
private static String myWEBINFFilePath = System.getProperty("user.dir"); private static String myWEBINFFilePath = System.getProperty("user.dir");
private static Logger log; private static Logger log = LoggerFactory.getLogger(de.superx.bin.ExecuteMask.class);
private static String usage = " Kommandozeilen-Interface für Ausführung von Masken und Export des Ergebnis als Datei\n" private static String usage = " Kommandozeilen-Interface für Ausführung von Masken und Export des Ergebnis als Datei\n"
+ " Parameter:\n" + " -logger:Pfad zu logging.properties, normalerweise $SUPERX_DIR/db/conf\n" + " Parameter:\n" + " -logger:Pfad zu logging.properties, normalerweise $SUPERX_DIR/db/conf\n"
@ -115,13 +113,13 @@ public class ExecuteMask {
+ " -params:Parameter für die Maske, jeweils mit \"&\" getrennt in einem String\n" + " \n" + " -params:Parameter für die Maske, jeweils mit \"&\" getrennt in einem String\n" + " \n"
+ " Sollte im Arbeitsverzeichnis webapps/superx/WEB-INF laufen\n" + " \n" + " Beispiele:\n" + " Sollte im Arbeitsverzeichnis webapps/superx/WEB-INF laufen\n" + " \n" + " Beispiele:\n"
+ " HTML Druckversion (Default): \n" + " HTML Druckversion (Default): \n"
+ " java de.superx.bin.ExecuteMask -tid:16000 -out:test.htm -user:admin \"-params:Köpfe oder Fälle ?=1=1&Stichtag=1\" -logger:/home/superx/git/superx/superx/WEB-INF/conf/edustore/db/conf/logging.properties\n" + " java de.superx.bin.ExecuteMask -tid:16000 -out:test.htm -user:admin \"-params:Köpfe oder Fälle ?=1=1&Stichtag=1\" \n"
+ " PDF Datei:\n" + " PDF Datei:\n"
+ " java de.superx.bin.ExecuteMask -tid:16000 -out:test.pdf -user:admin \"-params:Köpfe oder Fälle ?=1=1&Stichtag=1&stylesheet=tabelle_fo_pdf.xsl&contenttype=application/pdf\" -logger:/home/superx/git/superx/superx/WEB-INF/conf/edustore/db/conf/logging.properties\n" + " java de.superx.bin.ExecuteMask -tid:16000 -out:test.pdf -user:admin \"-params:Köpfe oder Fälle ?=1=1&Stichtag=1&stylesheet=tabelle_fo_pdf.xsl&contenttype=application/pdf\" \n"
+ " Excel-Datei\n" + " Excel-Datei\n"
+ " java de.superx.bin.ExecuteMask -tid:16000 -out:test.xls -user:admin \"-params:Köpfe oder Fälle ?=1=1&Stichtag=1&stylesheet=tabelle_xls.xsl&contenttype=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\" -logger:/home/superx/git/superx/superx/WEB-INF/conf/edustore/db/conf/logging.properties\n" + " java de.superx.bin.ExecuteMask -tid:16000 -out:test.xls -user:admin \"-params:Köpfe oder Fälle ?=1=1&Stichtag=1&stylesheet=tabelle_xls.xsl&contenttype=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\" \n"
+ " CSV-Datei\n" + " CSV-Datei\n"
+ " java de.superx.bin.ExecuteMask -tid:16000 -out:test.csv -user:admin \"-params:Köpfe oder Fälle ?=1=1&Stichtag=1&contenttype=text/csv\" -logger:/home/superx/git/superx/superx/WEB-INF/conf/edustore/db/conf/logging.properties\n" + " java de.superx.bin.ExecuteMask -tid:16000 -out:test.csv -user:admin \"-params:Köpfe oder Fälle ?=1=1&Stichtag=1&contenttype=text/csv\" \n"
+ " -fopxconf (Pfad dazu - optional)"; + " -fopxconf (Pfad dazu - optional)";
static MockHttpServletRequest mock ; static MockHttpServletRequest mock ;
@ -154,7 +152,7 @@ public class ExecuteMask {
// von ExecuteMaske in JUnitTest Batterie mittels ant // von ExecuteMaske in JUnitTest Batterie mittels ant
mock = new MockHttpServletRequest(); mock = new MockHttpServletRequest();
GetOpts.setOpts(args); GetOpts.setOpts(args);
String isdrin = GetOpts.isAllRequiredOptionsPresent(new Options[]{Options.opt_logger, String isdrin = GetOpts.isAllRequiredOptionsPresent(new Options[]{
Options.opt_tid, Options.opt_tid,
Options.opt_out, Options.opt_out,
Options.opt_user}); Options.opt_user});
@ -163,8 +161,6 @@ public class ExecuteMask {
return; return;
} }
String userName = GetOpts.getValue(Options.opt_user); String userName = GetOpts.getValue(Options.opt_user);
String loggingProperties = GetOpts.getValue(Options.opt_logger);
try { try {
myWEBINFFilePath= de.superx.util.PathAndFileUtils.getWebinfDirectory(); myWEBINFFilePath= de.superx.util.PathAndFileUtils.getWebinfDirectory();
} catch (URISyntaxException e1) { } catch (URISyntaxException e1) {
@ -189,19 +185,7 @@ public class ExecuteMask {
System.out.println("No opt -mandantenID present. mandantenID was already set to " + mandantenID); System.out.println("No opt -mandantenID present. mandantenID was already set to " + mandantenID);
} }
mandantenNamen.add(mandantenID); mandantenNamen.add(mandantenID);
try ( FileInputStream ins = new FileInputStream(loggingProperties) ) {
LogManager MyLogManager = java.util.logging.LogManager.getLogManager();
MyLogManager.readConfiguration(ins);
log = Logger.getLogger(ExecuteMask.class.getName());
log.addHandler(new ConsoleHandler());
System.out.println("Using Loggging-Level " + log.getLevel());
} catch (FileNotFoundException e2) {
System.err.println("Datei " + loggingProperties + " nicht gefunden:" + e2.toString());
return;
} catch (IOException e) {
System.err.println("Datei " + loggingProperties + " kann nicht gelesen werden:" + e.toString());
return;
}
tutil.start(); tutil.start();
try { try {
// SxPools.closeAll(); // SxPools.closeAll();
@ -218,7 +202,7 @@ public class ExecuteMask {
user.setMandantenID(mandantenID); user.setMandantenID(mandantenID);
con.close(); con.close();
} catch (Exception e) { } catch (Exception e) {
log.severe("Fehler beim Aufbau der Connection: " + e.toString()); log.error("Fehler beim Aufbau der Connection: " + e.toString());
e.printStackTrace(); e.printStackTrace();
return; return;
} }
@ -246,7 +230,7 @@ public class ExecuteMask {
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.severe("Fehler beim Ausführen der Maske " + tidString + ": " + e.toString()); log.error("Fehler beim Ausführen der Maske " + tidString + ": " + e.toString());
throw e; throw e;
} }
} }
@ -271,7 +255,7 @@ public class ExecuteMask {
try { try {
rs = ServletUtils.execute("Ermittle ID für " + userName, query, mandantenID_par); rs = ServletUtils.execute("Ermittle ID für " + userName, query, mandantenID_par);
} catch (Exception e) { } catch (Exception e) {
log.severe("Fehler beim Ermitteln der ID für " + userName + ": " + e.toString()); log.error("Fehler beim Ermitteln der ID für " + userName + ": " + e.toString());
} }
for (Iterator<SxResultRow> it = rs.iterator(); it.hasNext();) { for (Iterator<SxResultRow> it = rs.iterator(); it.hasNext();) {
SxResultRow row = it.next(); SxResultRow row = it.next();
@ -300,7 +284,7 @@ public class ExecuteMask {
try { try {
rs = ServletUtils.execute("Ermittle Admin-Flag für " + userName, query, mandantenID_par); rs = ServletUtils.execute("Ermittle Admin-Flag für " + userName, query, mandantenID_par);
} catch (Exception e) { } catch (Exception e) {
log.severe("Fehler beim Ermitteln der Admin-Rechte für " + userName + ": " + e.toString()); log.error("Fehler beim Ermitteln der Admin-Rechte für " + userName + ": " + e.toString());
} }
if (rs == null) { if (rs == null) {
return admin; return admin;
@ -393,7 +377,7 @@ public class ExecuteMask {
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.severe("Fehler beim Erstellen des XML für Maske " + e.toString()); log.error("Fehler beim Erstellen des XML für Maske " + e.toString());
} }
String ausgabedatei = ""; String ausgabedatei = "";
if (stylesheet.equals("tabelle_xml.xsl")) { if (stylesheet.equals("tabelle_xml.xsl")) {
@ -438,7 +422,7 @@ public class ExecuteMask {
} }
} catch (JRException | IOException e) { } catch (JRException | IOException e) {
log.severe("Fehler bei JasperReport-Erzeugung " + e.toString()); log.error("Fehler bei JasperReport-Erzeugung " + e.toString());
} }
} else } else
@ -469,7 +453,7 @@ public class ExecuteMask {
targetfilename = resultPath.toString(); targetfilename = resultPath.toString();
} }
} catch (IOException e) { } catch (IOException e) {
log.severe("Fehler beim Erstellen der Datei " + filename + " " + e.toString()); log.error("Fehler beim Erstellen der Datei " + filename + " " + e.toString());
} }
return targetfilename; return targetfilename;
@ -506,7 +490,7 @@ public class ExecuteMask {
log.info("Datei " + filename + " erzeugt"); log.info("Datei " + filename + " erzeugt");
} }
} catch (Exception e) { } catch (Exception e) {
log.severe("Fehler bei der Transformation:"); log.error("Fehler bei der Transformation:");
e.printStackTrace(); e.printStackTrace();
} }
} else { } else {
@ -521,7 +505,7 @@ public class ExecuteMask {
myTransformer.setFopxconfFile(fopxconfFile); myTransformer.setFopxconfFile(fopxconfFile);
myTransformer.transformFile(method); myTransformer.transformFile(method);
} catch (Exception e) { } catch (Exception e) {
log.severe("Fehler bei der Transformation:"); log.error("Fehler bei der Transformation:");
e.printStackTrace(); e.printStackTrace();
} }
} }

8
src/de/superx/bin/FMParser.java

@ -71,7 +71,7 @@ public class FMParser extends TemplateProcessor {
output = simpleParser(dbprop, input); output = simpleParser(dbprop, input);
} else { } else {
SxPools.initTesting(props); SxPools.initTesting(props);
initConAndParser(); initConAndParser(dbprop);
sqlDialect = de.superx.util.SqlStringUtils.getSqlDialect(props.getProperty("driverName")); sqlDialect = de.superx.util.SqlStringUtils.getSqlDialect(props.getProperty("driverName"));
HashMap map = new HashMap(); HashMap map = new HashMap();
map.put("TableFieldExists", new TableFieldExists(con)); map.put("TableFieldExists", new TableFieldExists(con));
@ -84,7 +84,7 @@ public class FMParser extends TemplateProcessor {
FileUtils.writeStringToFile(new File(outfile), output); FileUtils.writeStringToFile(new File(outfile), output);
} }
private void initConAndParser() throws IOException, SQLException, ClassNotFoundException { private void initConAndParser(String dbprop) throws IOException, SQLException, ClassNotFoundException {
super.con = ConnectionCreator.getConnectionCryptPassword(dbprop, "driverName", "connectionURL", super.con = ConnectionCreator.getConnectionCryptPassword(dbprop, "driverName", "connectionURL",
"connectionName", "connectionPassword"); "connectionName", "connectionPassword");
stm = con.createStatement(); stm = con.createStatement();
@ -163,13 +163,15 @@ public class FMParser extends TemplateProcessor {
public static String simpleParser(String dbprop, String input) public static String simpleParser(String dbprop, String input)
throws FileNotFoundException, IOException, Exception { throws FileNotFoundException, IOException, Exception {
Properties props = PropsReader.prepareProps(new File(dbprop)); Properties props = PropsReader.prepareProps(new File(dbprop));
FMParser myParser=new FMParser(DEFAULT_MANDANTEN_ID);
myParser.initConAndParser(dbprop);
String output = ""; String output = "";
sqlDialect = de.superx.util.SqlStringUtils.getSqlDialect(props.getProperty("driverName")); sqlDialect = de.superx.util.SqlStringUtils.getSqlDialect(props.getProperty("driverName"));
HashMap map = new HashMap(); HashMap map = new HashMap();
try { try {
output = "--automatically created by SuperX/Freemarker for " + sqlDialect + " (" output = "--automatically created by SuperX/Freemarker for " + sqlDialect + " ("
+ DateUtils.getTodayString() + " " + DateUtils.getNowString() + ")\n" + DateUtils.getTodayString() + " " + DateUtils.getNowString() + ")\n"
+ new FMParser(DEFAULT_MANDANTEN_ID).process("FM-Parsing ", input, map, sqlDialect); + myParser.process("FM-Parsing ", input, map, sqlDialect);
} catch (Exception e) { } catch (Exception e) {
System.err.println("Fehler beim FM-Parsen "); System.err.println("Fehler beim FM-Parsen ");
e.printStackTrace(); e.printStackTrace();

27
src/de/superx/bin/SimpleTransform.java

@ -8,9 +8,9 @@ import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.util.logging.LogManager; import org.slf4j.Logger;
import java.util.logging.Logger; import org.slf4j.LoggerFactory;
import de.superx.bin.SxTransformer;
import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerException;
@ -23,9 +23,9 @@ import de.memtext.util.TimeUtils;
* (3 statements). * (3 statements).
*/ */
public class SimpleTransform { public class SimpleTransform {
private static String usage = "-------------------------------------\nGebrauch: java de.superx.SimpleTransform -logger=<<Pfad zu logging.properties>> -IN=<<xml-Datei>> -XSL=<<xsl-Datei>> -method=<<xml |html|text>>(optional) -param=<<Parameter>>(optional) -OUT=<<Ausgabedatei>>(optional) \n---------------------------------------------------"; private static String usage = "-------------------------------------\nGebrauch: java de.superx.SimpleTransform -XSL=<<xsl-Datei>> -method=<<xml |html|text>>(optional) -param=<<Parameter>>(optional) -OUT=<<Ausgabedatei>>(optional) \n---------------------------------------------------";
static Logger logger = (Logger) Logger.getLogger(SimpleTransform.class.toString()); static Logger logger =LoggerFactory.getLogger(SimpleTransform.class);
private static String _out = ""; private static String _out = "";
@ -39,7 +39,7 @@ public class SimpleTransform {
String _params = ""; String _params = "";
String logfile = ""; String logfile = "";
GetOpts.setOpts(args); GetOpts.setOpts(args);
String isdrin = GetOpts.isAllRequiredOptionsPresent(new Options[] {Options.opt_logger,Options.opt_in,Options.opt_xsl}); String isdrin = GetOpts.isAllRequiredOptionsPresent(new Options[] {Options.opt_in,Options.opt_xsl});
if (isdrin != null) { if (isdrin != null) {
System.err.println("Folgende Optionen fehlen: " + isdrin); System.err.println("Folgende Optionen fehlen: " + isdrin);
System.err.println(usage); System.err.println(usage);
@ -47,24 +47,13 @@ public class SimpleTransform {
} }
//GetOpts myOpts=new GetOpts(); //GetOpts myOpts=new GetOpts();
if (GetOpts.isPresent(Options.opt_logger)) logfile = GetOpts.getValue(Options.opt_logger);
if (GetOpts.isPresent(Options.opt_in)) _xml = GetOpts.getValue(Options.opt_in); if (GetOpts.isPresent(Options.opt_in)) _xml = GetOpts.getValue(Options.opt_in);
if (GetOpts.isPresent(Options.opt_xsl)) _xsl = GetOpts.getValue(Options.opt_xsl); if (GetOpts.isPresent(Options.opt_xsl)) _xsl = GetOpts.getValue(Options.opt_xsl);
if (GetOpts.isPresent(Options.opt_out)) _out = GetOpts.getValue(Options.opt_out); if (GetOpts.isPresent(Options.opt_out)) _out = GetOpts.getValue(Options.opt_out);
if (GetOpts.isPresent(Options.opt_method)) method = GetOpts.getValue(Options.opt_method); if (GetOpts.isPresent(Options.opt_method)) method = GetOpts.getValue(Options.opt_method);
if (GetOpts.isPresent(Options.opt_params)) _params = GetOpts.getValue(Options.opt_params); if (GetOpts.isPresent(Options.opt_params)) _params = GetOpts.getValue(Options.opt_params);
//logger.initRaw(dosql.class)
//PropertyConfigurator.configure(logfile);
File f = new File(logfile);
if (!f.exists()) {
throw new IOException("Datei nicht gefunden: " + logfile);
}
FileInputStream ins = new FileInputStream(logfile);
LogManager MyLogManager = java.util.logging.LogManager.getLogManager();
MyLogManager.readConfiguration(ins);
//logfile = MyLogManager.getProperty(".level");
logger.info("Using Loggging-Level " + MyLogManager.getProperty(".level"));
SxTransformer myTransformer = null; SxTransformer myTransformer = null;
if (_out.equals("")) if (_out.equals(""))
@ -85,7 +74,7 @@ public class SimpleTransform {
public static void main(String args[]) { public static void main(String args[]) {
try { try {
if (args.length < 2) { if (args.length < 2) {
System.err.println("Mindestens drei Parameter (Pfad zu den logger.properties, Pfad zur xml-Datei,Pfad zur xsl-Datei) erfoderlich"); System.err.println("Mindestens zwei Parameter (Pfad zur xml-Datei,Pfad zur xsl-Datei) erfoderlich");
System.err.println(usage); System.err.println(usage);
System.exit(1); System.exit(1);
} }

98
src/de/superx/bin/SxJdbcClient.java

@ -14,8 +14,8 @@ import java.sql.Statement;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import java.util.logging.Level; import org.slf4j.Logger;
import java.util.logging.Logger; import org.slf4j.LoggerFactory;
/** /**
* @author Daniel Quathamer Projektgruppe SuperX * @author Daniel Quathamer Projektgruppe SuperX
@ -35,9 +35,9 @@ public class SxJdbcClient {
String propFile; String propFile;
//public static String propfile="../conf/db.properties"; //public static String propfile="../conf/db.properties";
String loglevel = "../conf/logging.properties";
public Logger myLogger = null; // = Logger.getLogger(SxJdbcClient.class); public Logger myLogger = LoggerFactory.getLogger(SxJdbcClient.class);
Connection myDb = null; Connection myDb = null;
@ -72,7 +72,7 @@ public class SxJdbcClient {
public SxJdbcClient(Logger logger, String dbpropfile) { public SxJdbcClient(Logger logger, String dbpropfile) {
propFile = dbpropfile; propFile = dbpropfile;
myLogger = logger; myLogger = logger;
myLogger.config("Starting the jdbc-Client."); myLogger.info("Starting the jdbc-Client.");
//loglevel=myLogger.getRootLogger().getLevel().toString().trim(); //loglevel=myLogger.getRootLogger().getLevel().toString().trim();
} }
@ -80,14 +80,14 @@ public class SxJdbcClient {
propFile = dbpropfile; propFile = dbpropfile;
setSqlstmt(sql); setSqlstmt(sql);
myLogger = logger; myLogger = logger;
myLogger.config("Starting the jdbc-Client."); myLogger.info("Starting the jdbc-Client.");
//loglevel=myLogger.getRootLogger().getLevel().toString().trim(); //loglevel=myLogger.getRootLogger().getLevel().toString().trim();
} }
public SxJdbcClient(Logger logger, Connection con, String sql) throws SQLException { public SxJdbcClient(Logger logger, Connection con, String sql) throws SQLException {
getConnection(con); getConnection(con);
setSqlstmt(sql); setSqlstmt(sql);
myLogger = logger; myLogger = logger;
myLogger.config("Starting the jdbc-Client."); myLogger.info("Starting the jdbc-Client.");
//loglevel=myLogger.getRootLogger().getLevel().toString().trim(); //loglevel=myLogger.getRootLogger().getLevel().toString().trim();
} }
public synchronized void sqlResultSet(Statement st, String sql) throws SQLException { public synchronized void sqlResultSet(Statement st, String sql) throws SQLException {
@ -176,7 +176,7 @@ public class SxJdbcClient {
sendToShell("! chmod +x " + f.getAbsolutePath()); sendToShell("! chmod +x " + f.getAbsolutePath());
sendToShell("! " + f.getAbsolutePath()); sendToShell("! " + f.getAbsolutePath());
if (myLogger != null && f != null && myLogger.getLevel() != null && myLogger.getLevel().intValue() <= Level.INFO.intValue()) f.delete();
} catch (Exception e) { } catch (Exception e) {
// e.printStackTrace(); // e.printStackTrace();
throw new RuntimeException("Failed to execute command '" + inString + "': " + e); throw new RuntimeException("Failed to execute command '" + inString + "': " + e);
@ -254,7 +254,7 @@ public class SxJdbcClient {
/*try { /*try {
myConnection.close(); myConnection.close();
} catch (SQLException e) { } catch (SQLException e) {
myLogger.severe("Failed to close connection: "+e.toString()); myLogger.error("Failed to close connection: "+e.toString());
} }
*/ */
@ -264,7 +264,7 @@ public class SxJdbcClient {
try { try {
getConnection(); getConnection();
} catch (SQLException e) { } catch (SQLException e) {
myLogger.severe("Failed to get connection: " + e.toString()); myLogger.error("Failed to get connection: " + e.toString());
throw new SQLException("Failed to get connection: " + e.toString()); throw new SQLException("Failed to get connection: " + e.toString());
} }
myLogger.info("Statement : " + sqlstmt); myLogger.info("Statement : " + sqlstmt);
@ -306,18 +306,18 @@ public class SxJdbcClient {
try { try {
getConnection(); getConnection();
if (!dbmd.storesLowerCaseIdentifiers()) tabelle = tabelle.toUpperCase(); if (!dbmd.storesLowerCaseIdentifiers()) tabelle = tabelle.toUpperCase();
myLogger.config("Tabellenkatalog für " + tabelle + " in Datenbank " + myConnection.getCatalog()); myLogger.info("Tabellenkatalog für " + tabelle + " in Datenbank " + myConnection.getCatalog());
rs = dbmd.getColumns(myConnection.getCatalog(), null, tabelle, null); rs = dbmd.getColumns(myConnection.getCatalog(), null, tabelle, null);
rsmd = rs.getMetaData(); rsmd = rs.getMetaData();
} catch (SQLException e) { } catch (SQLException e) {
myLogger.severe("Tabellenkatalog für " + tabelle + " konnte nicht erstellt werden: " + e.toString()); myLogger.error("Tabellenkatalog für " + tabelle + " konnte nicht erstellt werden: " + e.toString());
} }
/*try { /*try {
myConnection.close(); myConnection.close();
} catch (SQLException e) { } catch (SQLException e) {
myLogger.severe("Failed to close connection: "+e.toString()); myLogger.error("Failed to close connection: "+e.toString());
} }
*/ */
} }
@ -326,10 +326,10 @@ public class SxJdbcClient {
try { try {
getConnection(); getConnection();
myLogger.config("PrepareStatement für " + sql + " in Datenbank " + myConnection.getCatalog()); myLogger.info("PrepareStatement für " + sql + " in Datenbank " + myConnection.getCatalog());
pst = myConnection.con.prepareStatement(sql); pst = myConnection.con.prepareStatement(sql);
} catch (SQLException e) { } catch (SQLException e) {
myLogger.severe("PrepareStatement konnte nicht erstellt werden für SQL-Statement:" + sql + ": " + e.toString()); myLogger.error("PrepareStatement konnte nicht erstellt werden für SQL-Statement:" + sql + ": " + e.toString());
System.exit(-1); System.exit(-1);
} }
@ -340,7 +340,7 @@ public class SxJdbcClient {
try { try {
getConnection(); getConnection();
} catch (SQLException e) { } catch (SQLException e) {
myLogger.severe("Failed to get connection: " + e.toString()); myLogger.error("Failed to get connection: " + e.toString());
throw new SQLException("Failed to get connection: " + e.toString()); throw new SQLException("Failed to get connection: " + e.toString());
} }
String zs = ""; String zs = "";
@ -350,7 +350,7 @@ public class SxJdbcClient {
zs += "<database>"; zs += "<database>";
try { try {
myCatalog = myConnection.getCatalog(); myCatalog = myConnection.getCatalog();
myLogger.config("Column-katalog für " + " Datenbank " + myCatalog); myLogger.info("Column-katalog für " + " Datenbank " + myCatalog);
} catch (SQLException e) { } catch (SQLException e) {
myLogger.info("getCatalog nicht implementiert " + e.toString()); myLogger.info("getCatalog nicht implementiert " + e.toString());
myCatalog = null; myCatalog = null;
@ -376,7 +376,7 @@ public class SxJdbcClient {
try { try {
myConnection.close(); myConnection.close();
} catch (SQLException e) { } catch (SQLException e) {
myLogger.severe("Failed to close connection: " + e.toString()); myLogger.error("Failed to close connection: " + e.toString());
} }
return zs; return zs;
@ -411,7 +411,7 @@ public class SxJdbcClient {
try { try {
myCatalog = myConnection.getCatalog(); myCatalog = myConnection.getCatalog();
myLogger.config("Index-katalog für " + tabelle + " in Datenbank " + myCatalog); myLogger.info("Index-katalog für " + tabelle + " in Datenbank " + myCatalog);
} catch (SQLException e) { } catch (SQLException e) {
myLogger.info("getCatalog nicht implementiert " + e.toString()); myLogger.info("getCatalog nicht implementiert " + e.toString());
myCatalog = null; myCatalog = null;
@ -428,7 +428,7 @@ public class SxJdbcClient {
} else } else
myLogger.info("Keine Rückgabewerte aus PrimaryKey-schema"); myLogger.info("Keine Rückgabewerte aus PrimaryKey-schema");
} catch (SQLException e) { } catch (SQLException e) {
myLogger.severe("PrimaryKey-katalog konnte nicht erstellt werden: " + e.toString()); myLogger.error("PrimaryKey-katalog konnte nicht erstellt werden: " + e.toString());
} }
try { try {
@ -500,9 +500,9 @@ public class SxJdbcClient {
} }
} else } else
myLogger.warning("Keine Rückgabewerte aus Indexschema"); myLogger.warn("Keine Rückgabewerte aus Indexschema");
} catch (SQLException e) { } catch (SQLException e) {
myLogger.severe("Indexkatalog konnte nicht erstellt werden: " + e.toString()); myLogger.error("Indexkatalog konnte nicht erstellt werden: " + e.toString());
} }
return (zs); return (zs);
@ -514,7 +514,7 @@ public class SxJdbcClient {
try { try {
myCatalog = myConnection.getCatalog(); myCatalog = myConnection.getCatalog();
myLogger.config("Privileges-katalog für " + tabelle + " in Datenbank " + myCatalog); myLogger.info("Privileges-katalog für " + tabelle + " in Datenbank " + myCatalog);
} catch (SQLException e) { } catch (SQLException e) {
myLogger.info("getCatalog nicht implementiert " + e.toString()); myLogger.info("getCatalog nicht implementiert " + e.toString());
myCatalog = null; myCatalog = null;
@ -529,7 +529,7 @@ public class SxJdbcClient {
} else } else
myLogger.info("Keine Rückgabewerte aus Privilegschema"); myLogger.info("Keine Rückgabewerte aus Privilegschema");
} catch (SQLException e) { } catch (SQLException e) {
myLogger.severe("Privilegkatalog konnte nicht erstellt werden: " + e.toString()); myLogger.error("Privilegkatalog konnte nicht erstellt werden: " + e.toString());
} }
return (zs); return (zs);
@ -541,7 +541,7 @@ public class SxJdbcClient {
try { try {
myCatalog = myConnection.getCatalog(); myCatalog = myConnection.getCatalog();
myLogger.config("ForeignKey-katalog für " + tabelle + " in Datenbank " + myCatalog); myLogger.info("ForeignKey-katalog für " + tabelle + " in Datenbank " + myCatalog);
} catch (SQLException e) { } catch (SQLException e) {
myLogger.info("getCatalog nicht implementiert " + e.toString()); myLogger.info("getCatalog nicht implementiert " + e.toString());
myCatalog = null; myCatalog = null;
@ -556,7 +556,7 @@ public class SxJdbcClient {
} else } else
myLogger.info("Keine Rückgabewerte aus ForeignKey-schema"); myLogger.info("Keine Rückgabewerte aus ForeignKey-schema");
} catch (SQLException e) { } catch (SQLException e) {
myLogger.severe("ForeignKey-katalog konnte nicht erstellt werden: " + e.toString()); myLogger.error("ForeignKey-katalog konnte nicht erstellt werden: " + e.toString());
} }
return (zs); return (zs);
@ -568,7 +568,7 @@ public class SxJdbcClient {
try { try {
myCatalog = myConnection.getCatalog(); myCatalog = myConnection.getCatalog();
myLogger.config("PrimaryKey-katalog für " + tabelle + " in Datenbank " + myCatalog); myLogger.info("PrimaryKey-katalog für " + tabelle + " in Datenbank " + myCatalog);
} catch (SQLException e) { } catch (SQLException e) {
myLogger.info("getCatalog nicht implementiert " + e.toString()); myLogger.info("getCatalog nicht implementiert " + e.toString());
myCatalog = null; myCatalog = null;
@ -583,7 +583,7 @@ public class SxJdbcClient {
} else } else
myLogger.info("Keine Rückgabewerte aus PrimaryKey-schema"); myLogger.info("Keine Rückgabewerte aus PrimaryKey-schema");
} catch (SQLException e) { } catch (SQLException e) {
myLogger.severe("PrimaryKey-katalog konnte nicht erstellt werden: " + e.toString()); myLogger.error("PrimaryKey-katalog konnte nicht erstellt werden: " + e.toString());
} }
return (zs); return (zs);
@ -595,7 +595,7 @@ public class SxJdbcClient {
try { try {
myCatalog = myConnection.getCatalog(); myCatalog = myConnection.getCatalog();
myLogger.config("ImportedKeys-katalog für " + tabelle + " in Datenbank " + myCatalog); myLogger.info("ImportedKeys-katalog für " + tabelle + " in Datenbank " + myCatalog);
} catch (SQLException e) { } catch (SQLException e) {
myLogger.info("getCatalog nicht implementiert " + e.toString()); myLogger.info("getCatalog nicht implementiert " + e.toString());
myCatalog = null; myCatalog = null;
@ -610,7 +610,7 @@ public class SxJdbcClient {
} else } else
myLogger.info("Keine Rückgabewerte aus ImportedKey-schema"); myLogger.info("Keine Rückgabewerte aus ImportedKey-schema");
} catch (SQLException e) { } catch (SQLException e) {
myLogger.severe("ImportedKey-katalog konnte nicht erstellt werden: " + e.toString()); myLogger.error("ImportedKey-katalog konnte nicht erstellt werden: " + e.toString());
} }
return (zs); return (zs);
@ -622,7 +622,7 @@ public class SxJdbcClient {
try { try {
myCatalog = myConnection.getCatalog(); myCatalog = myConnection.getCatalog();
myLogger.config("Column-katalog für " + tabelle + " in Datenbank " + myCatalog); myLogger.info("Column-katalog für " + tabelle + " in Datenbank " + myCatalog);
} catch (SQLException e) { } catch (SQLException e) {
myLogger.info("getCatalog nicht implementiert " + e.toString()); myLogger.info("getCatalog nicht implementiert " + e.toString());
myCatalog = null; myCatalog = null;
@ -706,7 +706,7 @@ public class SxJdbcClient {
myLogger.info("Keine Rückgabewerte aus Column-schema"); myLogger.info("Keine Rückgabewerte aus Column-schema");
} catch (SQLException e) { } catch (SQLException e) {
myLogger.severe("Column-katalog konnte nicht erstellt werden: " + e.toString()); myLogger.error("Column-katalog konnte nicht erstellt werden: " + e.toString());
} }
return (zs); return (zs);
@ -716,7 +716,7 @@ public class SxJdbcClient {
try { try {
getConnection(); getConnection();
} catch (SQLException e) { } catch (SQLException e) {
myLogger.severe("Failed to get connection: " + e.toString()); myLogger.error("Failed to get connection: " + e.toString());
throw new SQLException("Failed to get connection: " + e.toString()); throw new SQLException("Failed to get connection: " + e.toString());
} }
SxTransformer myTransformer = null; SxTransformer myTransformer = null;
@ -727,7 +727,7 @@ public class SxJdbcClient {
String zs = ""; String zs = "";
try { try {
myLogger.config("HIS-Konformer Column-katalog für " + tabelle + " in Datenbank " + myConnection.getCatalog()); myLogger.info("HIS-Konformer Column-katalog für " + tabelle + " in Datenbank " + myConnection.getCatalog());
rs = dbmd.getColumns(myConnection.getCatalog(), null, tabelle, null); rs = dbmd.getColumns(myConnection.getCatalog(), null, tabelle, null);
rsmd = rs.getMetaData(); rsmd = rs.getMetaData();
@ -781,13 +781,13 @@ public class SxJdbcClient {
myLogger.info("Keine Rückgabewerte aus Column-schema"); myLogger.info("Keine Rückgabewerte aus Column-schema");
} catch (SQLException e) { } catch (SQLException e) {
myLogger.severe("Column-katalog konnte nicht erstellt werden: " + e.toString()); myLogger.error("Column-katalog konnte nicht erstellt werden: " + e.toString());
} }
try { try {
myConnection.close(); myConnection.close();
} catch (SQLException e) { } catch (SQLException e) {
myLogger.severe("Failed to close connection: " + e.toString()); myLogger.error("Failed to close connection: " + e.toString());
} }
return (zs); return (zs);
@ -796,7 +796,7 @@ public class SxJdbcClient {
public void getSchemas() { public void getSchemas() {
//getConnection(); //getConnection();
try { try {
myLogger.config("Schemakatalog für " + myConnection.getCatalog().toString()); myLogger.info("Schemakatalog für " + myConnection.getCatalog().toString());
rs = dbmd.getSchemas(); rs = dbmd.getSchemas();
// .getColumns(myConnection.getCatalog(),"TABLE_SCHEM",tabelle,null); // .getColumns(myConnection.getCatalog(),"TABLE_SCHEM",tabelle,null);
@ -808,10 +808,10 @@ public class SxJdbcClient {
} }
} catch (SQLException e) { } catch (SQLException e) {
myLogger.warning("Schemakatalog konnte nicht erstellt werden: " + e.toString()); myLogger.warn("Schemakatalog konnte nicht erstellt werden: " + e.toString());
} catch (Exception e) { } catch (Exception e) {
myLogger.warning("Schemakatalog konnte nicht erstellt werden: " + e.toString()); myLogger.warn("Schemakatalog konnte nicht erstellt werden: " + e.toString());
} //return(rs); } //return(rs);
} }
@ -822,7 +822,7 @@ public class SxJdbcClient {
myDb.close(); myDb.close();
//MemoryUtils.printfree("conn closed "); //MemoryUtils.printfree("conn closed ");
} catch (SQLException e) { } catch (SQLException e) {
myLogger.severe("Connection konnte nicht geschlossen werden: " + e.toString()); myLogger.error("Connection konnte nicht geschlossen werden: " + e.toString());
} }
} }
@ -830,7 +830,7 @@ public class SxJdbcClient {
public void getConnection() throws SQLException { public void getConnection() throws SQLException {
myConnection = new SxConnection(); myConnection = new SxConnection();
myConnection.setPropfile(propFile); myConnection.setPropfile(propFile);
myLogger.config("Starting Connection..."); myLogger.info("Starting Connection...");
try { try {
myDb = myConnection.getConnection(); myDb = myConnection.getConnection();
st = myDb.createStatement(); st = myDb.createStatement();
@ -841,7 +841,7 @@ public class SxJdbcClient {
//st = myDb.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, //st = myDb.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
//ResultSet.CONCUR_UPDATABLE); //ResultSet.CONCUR_UPDATABLE);
} catch (Exception e) { } catch (Exception e) {
myLogger.severe("Keine DB-Verbindung: " + e.toString()); myLogger.error("Keine DB-Verbindung: " + e.toString());
throw new SQLException("Keine DB-Verbindung: " + e.toString()); throw new SQLException("Keine DB-Verbindung: " + e.toString());
} }
db_driver = myConnection.m_DriverClass.stringValue(); db_driver = myConnection.m_DriverClass.stringValue();
@ -861,7 +861,7 @@ public class SxJdbcClient {
//ResultSet.CONCUR_UPDATABLE); //ResultSet.CONCUR_UPDATABLE);
db_driver=dbmd.getDriverName(); db_driver=dbmd.getDriverName();
} catch (Exception e) { } catch (Exception e) {
myLogger.severe("Keine DB-Verbindung: " + e.toString()); myLogger.error("Keine DB-Verbindung: " + e.toString());
throw new SQLException("Keine DB-Verbindung: " + e.toString()); throw new SQLException("Keine DB-Verbindung: " + e.toString());
} }
//db_driver = con.myConnection.m_DriverClass.stringValue(); //db_driver = con.myConnection.m_DriverClass.stringValue();
@ -955,7 +955,7 @@ public class SxJdbcClient {
rs.close(); rs.close();
} }
} catch (Throwable ex) { } catch (Throwable ex) {
myLogger.severe("Error occured creating data types collection " + ex.toString()); myLogger.error("Error occured creating data types collection " + ex.toString());
} }
} }
@ -965,7 +965,7 @@ public class SxJdbcClient {
try { try {
buf.append(dbmd.getNumericFunctions()); buf.append(dbmd.getNumericFunctions());
} catch (Throwable ex) { } catch (Throwable ex) {
myLogger.severe("Error" + ex.toString()); myLogger.error("Error" + ex.toString());
} }
buf.append(","); buf.append(",");
@ -973,7 +973,7 @@ public class SxJdbcClient {
try { try {
buf.append(dbmd.getStringFunctions()); buf.append(dbmd.getStringFunctions());
} catch (Throwable ex) { } catch (Throwable ex) {
myLogger.severe("Error" + ex.toString()); myLogger.error("Error" + ex.toString());
} }
buf.append(","); buf.append(",");
@ -981,7 +981,7 @@ public class SxJdbcClient {
try { try {
buf.append(dbmd.getTimeDateFunctions()); buf.append(dbmd.getTimeDateFunctions());
} catch (Throwable ex) { } catch (Throwable ex) {
myLogger.severe("Error" + ex.toString()); myLogger.error("Error" + ex.toString());
} }
StringTokenizer strtok = new StringTokenizer(buf.toString(), ","); StringTokenizer strtok = new StringTokenizer(buf.toString(), ",");
@ -1002,12 +1002,12 @@ public class SxJdbcClient {
_tables.add(rs.getString(3).toUpperCase()); _tables.add(rs.getString(3).toUpperCase());
} }
} catch (Throwable th) { } catch (Throwable th) {
myLogger.severe("failed to load table names" + th.toString()); myLogger.error("failed to load table names" + th.toString());
} }
} }
public static void main(String args[]) { public static void main(String args[]) {
new SxJdbcClient(Logger.getAnonymousLogger(), null).setSqlstmt("! echo \"adfasf\" > te.txt"); new SxJdbcClient(null, null).setSqlstmt("! echo \"adfasf\" > te.txt");
} }
public boolean isLogAllResultSetsToConsole() { public boolean isLogAllResultSetsToConsole() {

54
src/de/superx/bin/SxTransformer.java

@ -17,9 +17,8 @@ import java.sql.ResultSetMetaData;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Types; import java.sql.Types;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import java.util.logging.Level; import org.slf4j.Logger;
import java.util.logging.Logger; import org.slf4j.LoggerFactory;
import javax.xml.transform.Result; import javax.xml.transform.Result;
import javax.xml.transform.Source; import javax.xml.transform.Source;
import javax.xml.transform.Transformer; import javax.xml.transform.Transformer;
@ -125,36 +124,36 @@ public class SxTransformer {
public SxTransformer(Logger logger, PrintStream myStream) { public SxTransformer(Logger logger, PrintStream myStream) {
super(); super();
myLogger = logger; myLogger = logger;
myLogger.config("Starting the Transformer with Stdout-Output."); myLogger.info("Starting the Transformer with Stdout-Output.");
myOutwriter = new PrintWriter(myStream); myOutwriter = new PrintWriter(myStream);
} }
public SxTransformer(Logger logger, String myFile) { public SxTransformer(Logger logger, String myFile) {
super(); super();
myLogger = logger; myLogger = logger;
myLogger.config("Starting the Transformer with File-Output."); myLogger.info("Starting the Transformer with File-Output.");
outfile = myFile; outfile = myFile;
myLogger.setLevel(Level.SEVERE);
} }
public SxTransformer(Logger logger, FileWriter myFilewriter) { public SxTransformer(Logger logger, FileWriter myFilewriter) {
super(); super();
myLogger = logger; myLogger = logger;
myLogger.config("Starting the Transformer with File-Output."); myLogger.info("Starting the Transformer with File-Output.");
myOutwriter = new PrintWriter(new BufferedWriter(myFilewriter)); myOutwriter = new PrintWriter(new BufferedWriter(myFilewriter));
} }
public SxTransformer(Logger logger) { public SxTransformer(Logger logger) {
super(); super();
myLogger = logger; myLogger = logger;
myLogger.config("Starting the Transformer without Stream"); myLogger.info("Starting the Transformer without Stream");
} }
public void printResult(String outFormat) { public void printResult(String outFormat) {
//loglevel=myLogger.getRootLogger().getLevel().toString().trim(); //loglevel=myLogger.getRootLogger().getLevel().toString().trim();
assignDelims(outFormat); assignDelims(outFormat);
myLogger.config("Resultset wird formatiert"); myLogger.info("Resultset wird formatiert");
String f_wert = ""; String f_wert = "";
//ResultSetMetaData rsmd = rs.getMetaData(); //ResultSetMetaData rsmd = rs.getMetaData();
@ -192,7 +191,7 @@ public class SxTransformer {
} }
} }
} catch (SQLException e1) { } catch (SQLException e1) {
myLogger.severe("Fehler beim Einlesen der Feldnamen: " + e1.toString()); myLogger.error("Fehler beim Einlesen der Feldnamen: " + e1.toString());
e1.printStackTrace(); e1.printStackTrace();
} }
if (header.equals("true")) zs += headZs; if (header.equals("true")) zs += headZs;
@ -201,7 +200,7 @@ public class SxTransformer {
myOutwriter.write(zs); myOutwriter.write(zs);
myOutwriter.flush(); myOutwriter.flush();
/* /*
* } catch (IOException e) { myLogger.severe("Fehler beim Ausgeben * } catch (IOException e) { myLogger.error("Fehler beim Ausgeben
* der Feldnamen: " + e.toString()); * der Feldnamen: " + e.toString());
* } * }
*/ */
@ -271,11 +270,11 @@ public class SxTransformer {
myOutwriter.close(); myOutwriter.close();
} /* } /*
* catch (IOException e) { myLogger.severe("Fehler beim Ausgeben * catch (IOException e) { myLogger.error("Fehler beim Ausgeben
* der Feldwerte: " + e.toString()); } * der Feldwerte: " + e.toString()); }
*/ */
catch (SQLException e) { catch (SQLException e) {
myLogger.warning("SQL-Fehler beim Ausgeben der Feldwerte: " + e.toString()); myLogger.warn("SQL-Fehler beim Ausgeben der Feldwerte: " + e.toString());
try { try {
myOutwriter.write(rs_delim2 + outFooter); myOutwriter.write(rs_delim2 + outFooter);
myOutwriter.flush(); myOutwriter.flush();
@ -283,11 +282,11 @@ public class SxTransformer {
outrs.close(); outrs.close();
} }
/* /*
* catch (IOException e1) { myLogger.severe("Fehler beim * catch (IOException e1) { myLogger.error("Fehler beim
* Ausgeben der Feldwerte: " + e1.toString()); } * Ausgeben der Feldwerte: " + e1.toString()); }
*/ */
catch (SQLException e1) { catch (SQLException e1) {
myLogger.warning("SQL-Fehler beim Ausgeben der Feldwerte: " + e1.toString()); myLogger.warn("SQL-Fehler beim Ausgeben der Feldwerte: " + e1.toString());
} }
} }
@ -327,7 +326,7 @@ public class SxTransformer {
} }
transformer.transform(new javax.xml.transform.stream.StreamSource(s1), new javax.xml.transform.stream.StreamResult(myOutwriter)); transformer.transform(new javax.xml.transform.stream.StreamSource(s1), new javax.xml.transform.stream.StreamResult(myOutwriter));
} catch (Exception e) { } catch (Exception e) {
myLogger.severe("XSL-Transformation fehlgeschlagen: " + e.toString()); myLogger.error("XSL-Transformation fehlgeschlagen: " + e.toString());
} }
@ -359,8 +358,7 @@ public class SxTransformer {
} }
if (methode.equals("pdf")) { //Sichern um zurücksetzen zu können. if (methode.equals("pdf")) { //Sichern um zurücksetzen zu können.
Level logLevel = myLogger.getParent().getLevel();
myLogger.getParent().setLevel(Level.SEVERE);
// configure fopFactory as desired // configure fopFactory as desired
//akt. Pfad muss WEB-INF sein oder vorher als -fopxconf Param übergeben worden sein //akt. Pfad muss WEB-INF sein oder vorher als -fopxconf Param übergeben worden sein
@ -396,7 +394,7 @@ public class SxTransformer {
try { try {
myOutputStream = new java.io.FileOutputStream(outfile); myOutputStream = new java.io.FileOutputStream(outfile);
} catch (FileNotFoundException e) { } catch (FileNotFoundException e) {
myLogger.severe("Ausgabedatei " + outfile + " kann nicht erzeugt werden:" + e.toString()); myLogger.error("Ausgabedatei " + outfile + " kann nicht erzeugt werden:" + e.toString());
System.exit(-1); System.exit(-1);
} }
@ -419,10 +417,10 @@ public class SxTransformer {
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(System.err); e.printStackTrace(System.err);
myLogger.severe("FOP-Transformation Fehler: " + e.toString()); myLogger.error("FOP-Transformation Fehler: " + e.toString());
} finally { } finally {
myOutputStream.close(); myOutputStream.close();
myLogger.getParent().setLevel(logLevel);
} }
} else { } else {
@ -457,9 +455,9 @@ public class SxTransformer {
myOutwriter = new PrintWriter(myFile); myOutwriter = new PrintWriter(myFile);
transformer.transform(new javax.xml.transform.stream.StreamSource(quellstring), new javax.xml.transform.stream.StreamResult(myOutwriter)); transformer.transform(new javax.xml.transform.stream.StreamSource(quellstring), new javax.xml.transform.stream.StreamResult(myOutwriter));
} catch (IOException e) { } catch (IOException e) {
myLogger.severe("Datei " + outfile + " kann nicht erzeugt werden: " + e.toString()); myLogger.error("Datei " + outfile + " kann nicht erzeugt werden: " + e.toString());
} catch (TransformerException e) { } catch (TransformerException e) {
myLogger.severe("Datei " + outfile + " kann nicht transformiert werden: " + e.toString()); myLogger.error("Datei " + outfile + " kann nicht transformiert werden: " + e.toString());
} }
//new javax.xml.transform.stream.StreamResult( myOutwriter)); //new javax.xml.transform.stream.StreamResult( myOutwriter));
} }
@ -474,7 +472,7 @@ public class SxTransformer {
out.write(quellstring); out.write(quellstring);
out.flush(); out.flush();
} catch (IOException e) { } catch (IOException e) {
myLogger.severe("Fehler beim Ausgeben des Ergebnisses: " + e.toString()); myLogger.error("Fehler beim Ausgeben des Ergebnisses: " + e.toString());
} }
} }
@ -483,7 +481,7 @@ public class SxTransformer {
//loglevel=myLogger.getRootLogger().getLevel().toString().trim(); //loglevel=myLogger.getRootLogger().getLevel().toString().trim();
assignDelims(outFormat); assignDelims(outFormat);
myLogger.config("Resultset wird formatiert"); myLogger.info("Resultset wird formatiert");
String f_wert = ""; String f_wert = "";
//ResultSetMetaData rsmd = rs.getMetaData(); //ResultSetMetaData rsmd = rs.getMetaData();
int cols = outrsmd.getColumnCount(); int cols = outrsmd.getColumnCount();
@ -543,7 +541,7 @@ public class SxTransformer {
// } // }
// catch (IOException e) // catch (IOException e)
// { // {
// myLogger.severe("Fehler beim Ausgeben der Feldwerte: // myLogger.error("Fehler beim Ausgeben der Feldwerte:
// "+e.toString()); // "+e.toString());
// //
// } // }
@ -553,7 +551,7 @@ public class SxTransformer {
zs += (rs_delim2); zs += (rs_delim2);
} catch (Exception e) { } catch (Exception e) {
myLogger.severe("Fehler beim Ausgeben der Feldwerte: " + e.toString()); myLogger.error("Fehler beim Ausgeben der Feldwerte: " + e.toString());
} }
outrs.close(); outrs.close();
@ -863,7 +861,7 @@ public class SxTransformer {
//-- nur zum Testen --// //-- nur zum Testen --//
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
Logger log = Logger.getLogger(SxTransformer.class.getName()); Logger log = LoggerFactory.getLogger(SxTransformer.class);
String rootDir = "/home/superx/tmp/"; String rootDir = "/home/superx/tmp/";
String quelle = rootDir + "Buchungsbericht_ids_Test.xml"; String quelle = rootDir + "Buchungsbericht_ids_Test.xml";
String zielFile = rootDir + "testneu.pdf"; String zielFile = rootDir + "testneu.pdf";

6
src/de/superx/bin/WebserviceChecker.java

@ -4,8 +4,8 @@ import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File; import java.io.File;
import java.io.FileWriter; import java.io.FileWriter;
import java.util.logging.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.xml.soap.SOAPConnection; import javax.xml.soap.SOAPConnection;
import javax.xml.soap.SOAPConnectionFactory; import javax.xml.soap.SOAPConnectionFactory;
import javax.xml.soap.SOAPMessage; import javax.xml.soap.SOAPMessage;
@ -14,7 +14,7 @@ import de.memtext.util.LogUtils;
public class WebserviceChecker extends AbstractWebserviceClient { public class WebserviceChecker extends AbstractWebserviceClient {
public static String[] args; public static String[] args;
private static final Logger log = Logger.getLogger("wc"); private static final Logger log = LoggerFactory.getLogger(WebserviceChecker.class);
public void run() { public void run() {
String testparam = ""; String testparam = "";

26
src/de/superx/bin/WebserviceClient.java

@ -11,9 +11,9 @@ import java.sql.Statement;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.Set; import java.util.Set;
import java.util.logging.Level;
import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@ -43,7 +43,7 @@ public class WebserviceClient extends AbstractWebserviceClient{
private String xsl, outfile; private String xsl, outfile;
private String stammdatenstart=null; private String stammdatenstart=null;
private boolean isDeleteTmpXmlFileWanted = true; private boolean isDeleteTmpXmlFileWanted = true;
private Logger logger = LoggerFactory.getLogger(WebserviceClient.class);
private static final String FISTL_HIERARCHIE_INFO = "<EX_FMHISV> \n" + private static final String FISTL_HIERARCHIE_INFO = "<EX_FMHISV> \n" +
@ -99,12 +99,12 @@ public class WebserviceClient extends AbstractWebserviceClient{
String msg = "Error: Aufruf von Webservice für " + xmlConfig String msg = "Error: Aufruf von Webservice für " + xmlConfig
+ " fehlgeschlagen"; + " fehlgeschlagen";
System.out.println(msg); System.out.println(msg);
logger.severe(msg); logger.error(msg);
LogUtils.close("wc"); LogUtils.close("wc");
System.exit(-1); System.exit(-1);
} }
} catch (Exception e) { } catch (Exception e) {
logger.severe(e.getMessage()); logger.error(e.getMessage());
System.out.println("Error " + e.getMessage()); System.out.println("Error " + e.getMessage());
e.printStackTrace(); e.printStackTrace();
LogUtils.close("wc"); LogUtils.close("wc");
@ -118,19 +118,19 @@ public class WebserviceClient extends AbstractWebserviceClient{
String soapString = StringUtils.replace(changesSOAP, String soapString = StringUtils.replace(changesSOAP,
"XXOBJECT_CLASSXX", objectClass); "XXOBJECT_CLASSXX", objectClass);
String startDatum = getStartDatum(); String startDatum = getStartDatum();
logger.log(Level.INFO, "Startdatum " + startDatum); logger.info( "Startdatum " + startDatum);
System.out.println("Startdatum " + startDatum); System.out.println("Startdatum " + startDatum);
soapString = StringUtils.replace(soapString, "XXSTARTDATEXX", soapString = StringUtils.replace(soapString, "XXSTARTDATEXX",
startDatum); startDatum);
soapString = StringUtils.replace(soapString, "XXTODAYXX", soapString = StringUtils.replace(soapString, "XXTODAYXX",
new java.sql.Date(new java.util.Date().getTime()).toString()); new java.sql.Date(new java.util.Date().getTime()).toString());
logger.fine("SOAP Aufruf:\n" + soapString); logger.info("SOAP Aufruf:\n" + soapString);
String result= readSOAP(soapString, changesURL).toString(); String result= readSOAP(soapString, changesURL).toString();
document = XMLUtils.buildDocumentFromString(result, false); document = XMLUtils.buildDocumentFromString(result, false);
logger.finest("Geaenderte Objekte Klasse " + objectClass); logger.info("Geaenderte Objekte Klasse " + objectClass);
} }
private void readConfig() throws IOException, SAXException { private void readConfig() throws IOException, SAXException {
@ -150,7 +150,7 @@ public class WebserviceClient extends AbstractWebserviceClient{
pause = Integer.parseInt(p); pause = Integer.parseInt(p);
System.out.println("Pause between soap calls " + pause); System.out.println("Pause between soap calls " + pause);
} }
logger.log(Level.INFO, "Verarbeite " + xmlConfig); logger.info( "Verarbeite " + xmlConfig);
System.out.println("Verarbeite " + xmlConfig); System.out.println("Verarbeite " + xmlConfig);
Document dconf = XMLUtils.buildDocument(new File(xmlConfig)); Document dconf = XMLUtils.buildDocument(new File(xmlConfig));
@ -422,7 +422,7 @@ public class WebserviceClient extends AbstractWebserviceClient{
.replace(soapxml, "XXHSNRXX", hsnr); .replace(soapxml, "XXHSNRXX", hsnr);
if (i == 0) if (i == 0)
logger.finest("1. SOAP Detailaufruf:\n" + soapxml); logger.info("1. SOAP Detailaufruf:\n" + soapxml);
String res = readSOAP(soapxml, detailURL).toString(); String res = readSOAP(soapxml, detailURL).toString();
String result = StringUtils.replace(res, replaceNodeName, String result = StringUtils.replace(res, replaceNodeName,
@ -442,11 +442,11 @@ public class WebserviceClient extends AbstractWebserviceClient{
result = true;} result = true;}
catch (Exception e) catch (Exception e)
{ {
logger.severe("Kein Konten TYPE gefunden mit Value I - Result:\n"); logger.error("Kein Konten TYPE gefunden mit Value I - Result:\n");
try { try {
logger.severe(XMLUtils.documentToString(document,null)); logger.error(XMLUtils.documentToString(document,null));
} catch (Exception ex) { } catch (Exception ex) {
logger.severe("Fehler bei XML Ausgabe "+ex); logger.error("Fehler bei XML Ausgabe "+ex);
} }
} }

14
src/de/superx/bin/WebserviceClientBewegungsdaten.java

@ -84,7 +84,7 @@ public class WebserviceClientBewegungsdaten extends AbstractWebserviceClient {
logger.info(msg); logger.info(msg);
System.out.println(msg); System.out.println(msg);
} catch (Exception e) { } catch (Exception e) {
logger.severe(e.getMessage()); logger.error(e.getMessage());
System.out.println("Error " + e.getMessage()); System.out.println("Error " + e.getMessage());
e.printStackTrace(); e.printStackTrace();
LogUtils.close("wc"); LogUtils.close("wc");
@ -100,7 +100,7 @@ public class WebserviceClientBewegungsdaten extends AbstractWebserviceClient {
Node n = XMLUtils.getFirstNode(configDocument, datentyp + "detailurl"); Node n = XMLUtils.getFirstNode(configDocument, datentyp + "detailurl");
url = XMLUtils.getTheValue(n); url = XMLUtils.getTheValue(n);
url = adaptURL(url); url = adaptURL(url);
logger.fine("URL:" + url); logger.info("URL:" + url);
System.out.println("URL:" + url); System.out.println("URL:" + url);
n = XMLUtils.getFirstNode(configDocument, datentyp + "detailsoap"); n = XMLUtils.getFirstNode(configDocument, datentyp + "detailsoap");
soap = XMLUtils.getTheValue(n); soap = XMLUtils.getTheValue(n);
@ -179,7 +179,7 @@ public class WebserviceClientBewegungsdaten extends AbstractWebserviceClient {
protected void runAbruf(String datevon, String datebis) throws Exception, XMLStreamException, IOException { protected void runAbruf(String datevon, String datebis) throws Exception, XMLStreamException, IOException {
String soap = getSoap(datevon, datebis); String soap = getSoap(datevon, datebis);
logger.fine(datentyp + "\nSOAP Aufruf:\n" + soap); logger.info(datentyp + "\nSOAP Aufruf:\n" + soap);
String msg = "starte Aufruf fuer " + datevon + " bis " + datebis; String msg = "starte Aufruf fuer " + datevon + " bis " + datebis;
System.out.println(msg); System.out.println(msg);
@ -224,7 +224,7 @@ public class WebserviceClientBewegungsdaten extends AbstractWebserviceClient {
+ ") fehlgeschlagen"; + ") fehlgeschlagen";
System.out.println(msg); System.out.println(msg);
System.out.println(StringUtils.readFile(tmpFile)); System.out.println(StringUtils.readFile(tmpFile));
logger.severe(msg); logger.error(msg);
LogUtils.close("wc"); LogUtils.close("wc");
System.exit(-1); System.exit(-1);
} }
@ -251,10 +251,10 @@ public class WebserviceClientBewegungsdaten extends AbstractWebserviceClient {
logger.info("\nHochschulnummer " + hsnr); logger.info("\nHochschulnummer " + hsnr);
if (GetOpts.isPresent(Options.opt_noDelete)) if (GetOpts.isPresent(Options.opt_noDelete))
isDeleteTmpXmlFileWanted = false; isDeleteTmpXmlFileWanted = false;
logger.log(Level.INFO, "Geschaeftsjahr " + jahr); logger.info( "Geschaeftsjahr " + jahr);
System.out.println("Geschaeftsjahr " + jahr); System.out.println("Geschaeftsjahr " + jahr);
logger.log(Level.INFO, "Verarbeite " + xmlConfig); logger.info( "Verarbeite " + xmlConfig);
System.out.println("Verarbeite " + xmlConfig); System.out.println("Verarbeite " + xmlConfig);
configDocument = XMLUtils.buildDocument(new File(xmlConfig)); configDocument = XMLUtils.buildDocument(new File(xmlConfig));
@ -276,7 +276,7 @@ public class WebserviceClientBewegungsdaten extends AbstractWebserviceClient {
String hdfilename = StringUtils.replace(outfilename, ".", "hd."); String hdfilename = StringUtils.replace(outfilename, ".", "hd.");
outFileHd = new File(hdfilename); outFileHd = new File(hdfilename);
String msg = "Erzeuge zusaetzliche Header_Datei " + hdfilename; String msg = "Erzeuge zusaetzliche Header_Datei " + hdfilename;
logger.log(Level.INFO, msg); logger.info( msg);
System.out.println(msg); System.out.println(msg);
fwhd = new PrintWriter(outFileHd); fwhd = new PrintWriter(outFileHd);
bfwhd = new BufferedWriter(fwhd); bfwhd = new BufferedWriter(fwhd);

24
src/de/superx/bin/WebserviceClientBewegungsdatenAlt.java

@ -5,9 +5,8 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.Calendar; import java.util.Calendar;
import java.util.logging.Level; import org.slf4j.Logger;
import java.util.logging.Logger; import org.slf4j.LoggerFactory;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
@ -43,7 +42,7 @@ public class WebserviceClientBewegungsdatenAlt extends AbstractWebserviceClient
private String jahr; private String jahr;
private PrintWriter fw; private PrintWriter fw;
private BufferedWriter bfw; private BufferedWriter bfw;
private static final Logger log = Logger.getLogger("wc"); private static final Logger log = LoggerFactory.getLogger(WebserviceClientBewegungsdatenAlt.class);
public static void main(String args[]) { public static void main(String args[]) {
System.out System.out
@ -63,8 +62,7 @@ public class WebserviceClientBewegungsdatenAlt extends AbstractWebserviceClient
LogUtils.initRawFileDateTime("wc", "WebserviceClient.log", 100000, LogUtils.initRawFileDateTime("wc", "WebserviceClient.log", 100000,
1, true, false); 1, true, false);
log.setLevel(Level.FINEST);
log.getHandlers()[0].setLevel(Level.FINEST);
GetOpts.setOpts(args); GetOpts.setOpts(args);
String isdrin = GetOpts.isAllRequiredOptionsPresent(new Options[] {Options.opt_xmlconfig, String isdrin = GetOpts.isAllRequiredOptionsPresent(new Options[] {Options.opt_xmlconfig,
Options.opt_xslPfad, Options.opt_xslPfad,
@ -86,7 +84,7 @@ public class WebserviceClientBewegungsdatenAlt extends AbstractWebserviceClient
log.info(msg); log.info(msg);
System.out.println(msg); System.out.println(msg);
} catch (Exception e) { } catch (Exception e) {
log.severe(e.getMessage()); log.error(e.getMessage());
System.out.println("Error " + e.getMessage()); System.out.println("Error " + e.getMessage());
e.printStackTrace(); e.printStackTrace();
System.exit(1); System.exit(1);
@ -114,7 +112,7 @@ public class WebserviceClientBewegungsdatenAlt extends AbstractWebserviceClient
// monat 0 ist Vorjahr, Monat 13 ist Folgejahr // monat 0 ist Vorjahr, Monat 13 ist Folgejahr
for (int monat = 0; monat <= 4; monat++) { for (int monat = 0; monat <= 4; monat++) {
String monatssoap = getMonatsoap(monat); String monatssoap = getMonatsoap(monat);
log.fine(datentyp + "\nSOAP Aufruf:\n" + monatssoap); log.info(datentyp + "\nSOAP Aufruf:\n" + monatssoap);
System.out.print("starte Aufruf " + (monat + 1)); System.out.print("starte Aufruf " + (monat + 1));
data = readSOAP(monatssoap, url).toString(); data = readSOAP(monatssoap, url).toString();
System.gc(); System.gc();
@ -148,7 +146,7 @@ public class WebserviceClientBewegungsdatenAlt extends AbstractWebserviceClient
String msg = "Error: Aufruf von Webservice für Bewegungsdaten " String msg = "Error: Aufruf von Webservice für Bewegungsdaten "
+ datentyp + " (" + xmlConfig + ") fehlgeschlagen"; + datentyp + " (" + xmlConfig + ") fehlgeschlagen";
System.out.println(msg); System.out.println(msg);
log.severe(msg); log.error(msg);
LogUtils.close("wc"); LogUtils.close("wc");
System.exit(-1); System.exit(-1);
} }
@ -205,10 +203,10 @@ public class WebserviceClientBewegungsdatenAlt extends AbstractWebserviceClient
log.info("\nHochschulnummer " + hsnr); log.info("\nHochschulnummer " + hsnr);
if (GetOpts.isPresent(Options.opt_noDelete)) if (GetOpts.isPresent(Options.opt_noDelete))
isDeleteTmpXmlFileWanted = false; isDeleteTmpXmlFileWanted = false;
log.log(Level.INFO, "Geschaeftsjahr " + jahr); log.info("Geschaeftsjahr " + jahr);
System.out.println("Geschaeftsjahr " + jahr); System.out.println("Geschaeftsjahr " + jahr);
log.log(Level.INFO, "Verarbeite " + xmlConfig); log.info("Verarbeite " + xmlConfig);
System.out.println("Verarbeite " + xmlConfig); System.out.println("Verarbeite " + xmlConfig);
configDocument = XMLUtils.buildDocument(new File(xmlConfig)); configDocument = XMLUtils.buildDocument(new File(xmlConfig));
@ -256,7 +254,7 @@ public class WebserviceClientBewegungsdatenAlt extends AbstractWebserviceClient
sxTrans.outfile=StringUtils.replace(outfile, ".", "hd."); sxTrans.outfile=StringUtils.replace(outfile, ".", "hd.");
sxTrans.stylesheet=StringUtils.replace(sxTrans.stylesheet,"soap_to_csv_fmifiit.xsl","soap_to_csv_fmifihd.xsl"); sxTrans.stylesheet=StringUtils.replace(sxTrans.stylesheet,"soap_to_csv_fmifiit.xsl","soap_to_csv_fmifihd.xsl");
String msg="Erzeuge zusaetzliche Header_Datei "+sxTrans.outfile; String msg="Erzeuge zusaetzliche Header_Datei "+sxTrans.outfile;
log.log(Level.INFO, msg); log.info(msg);
System.out.println(msg); System.out.println(msg);
sxTrans.transformFile("text"); sxTrans.transformFile("text");
} }
@ -272,7 +270,7 @@ public class WebserviceClientBewegungsdatenAlt extends AbstractWebserviceClient
*/ */
if (!XMLUtils.hasANodeWithName(resultDocument, "TYPE")) { if (!XMLUtils.hasANodeWithName(resultDocument, "TYPE")) {
System.out.println(data); System.out.println(data);
log.severe(data); log.error(data);
} else { } else {
Node type = XMLUtils.getFirstNode(resultDocument, "TYPE"); Node type = XMLUtils.getFirstNode(resultDocument, "TYPE");
if (XMLUtils.getTheValue(type).equals("I")) if (XMLUtils.getTheValue(type).equals("I"))

16
src/de/superx/bin/WebserviceClientBewegungsdatenByFistl.java

@ -88,7 +88,7 @@ public class WebserviceClientBewegungsdatenByFistl extends AbstractWebserviceCli
logger.info(msg); logger.info(msg);
System.out.println(msg); System.out.println(msg);
} catch (Exception e) { } catch (Exception e) {
logger.severe(e.getMessage()); logger.error(e.getMessage());
System.out.println("Error " + e.getMessage()); System.out.println("Error " + e.getMessage());
e.printStackTrace(); e.printStackTrace();
LogUtils.close("wc"); LogUtils.close("wc");
@ -103,7 +103,7 @@ public class WebserviceClientBewegungsdatenByFistl extends AbstractWebserviceCli
Node n = XMLUtils.getFirstNode(configDocument, datentyp + "detailurl"); Node n = XMLUtils.getFirstNode(configDocument, datentyp + "detailurl");
url = XMLUtils.getTheValue(n); url = XMLUtils.getTheValue(n);
url = adaptURL(url); url = adaptURL(url);
logger.fine("URL:" + url); logger.info("URL:" + url);
System.out.println("URL:" + url); System.out.println("URL:" + url);
n = XMLUtils.getFirstNode(configDocument, datentyp + "detailsoap"); n = XMLUtils.getFirstNode(configDocument, datentyp + "detailsoap");
soap = XMLUtils.getTheValue(n); soap = XMLUtils.getTheValue(n);
@ -111,7 +111,7 @@ public class WebserviceClientBewegungsdatenByFistl extends AbstractWebserviceCli
soap = soap.replace("XXJAHRXX", jahr); soap = soap.replace("XXJAHRXX", jahr);
System.out.println(datentyp + "\nSOAP Aufruf:\n" + soap); System.out.println(datentyp + "\nSOAP Aufruf:\n" + soap);
logger.fine(datentyp + "\nSOAP Aufruf:\n" + soap); logger.info(datentyp + "\nSOAP Aufruf:\n" + soap);
initOutFile(); initOutFile();
String msg = ""; String msg = "";
Iterator<String> it = finanzstellen.iterator(); Iterator<String> it = finanzstellen.iterator();
@ -157,7 +157,7 @@ public class WebserviceClientBewegungsdatenByFistl extends AbstractWebserviceCli
+ ") fehlgeschlagen"; + ") fehlgeschlagen";
System.out.println(msg); System.out.println(msg);
System.out.println(StringUtils.readFile(tmpFile)); System.out.println(StringUtils.readFile(tmpFile));
logger.severe(msg); logger.error(msg);
LogUtils.close("wc"); LogUtils.close("wc");
System.exit(-1); System.exit(-1);
} }
@ -179,10 +179,10 @@ public class WebserviceClientBewegungsdatenByFistl extends AbstractWebserviceCli
logger.info("\nHochschulnummer " + hsnr); logger.info("\nHochschulnummer " + hsnr);
if (GetOpts.isPresent(Options.opt_noDelete)) if (GetOpts.isPresent(Options.opt_noDelete))
isDeleteTmpXmlFileWanted = false; isDeleteTmpXmlFileWanted = false;
logger.log(Level.INFO, "Geschaeftsjahr " + jahr); logger.info("Geschaeftsjahr " + jahr);
System.out.println("Geschaeftsjahr " + jahr); System.out.println("Geschaeftsjahr " + jahr);
logger.log(Level.INFO, "Verarbeite " + xmlConfig); logger.info("Verarbeite " + xmlConfig);
System.out.println("Verarbeite " + xmlConfig); System.out.println("Verarbeite " + xmlConfig);
configDocument = XMLUtils.buildDocument(new File(xmlConfig)); configDocument = XMLUtils.buildDocument(new File(xmlConfig));
@ -201,7 +201,7 @@ public class WebserviceClientBewegungsdatenByFistl extends AbstractWebserviceCli
String hdfilename = StringUtils.replace(outfilename, ".", "hd."); String hdfilename = StringUtils.replace(outfilename, ".", "hd.");
outFileHd = new File(hdfilename); outFileHd = new File(hdfilename);
String msg = "Erzeuge zusaetzliche Header_Datei " + hdfilename; String msg = "Erzeuge zusaetzliche Header_Datei " + hdfilename;
logger.log(Level.INFO, msg); logger.info(msg);
System.out.println(msg); System.out.println(msg);
fwhd = new PrintWriter(outFileHd); fwhd = new PrintWriter(outFileHd);
bfwhd = new BufferedWriter(fwhd); bfwhd = new BufferedWriter(fwhd);
@ -323,7 +323,7 @@ public class WebserviceClientBewegungsdatenByFistl extends AbstractWebserviceCli
} }
String msg = finanzstellen.size() + " Finanzstellen gefunden"; String msg = finanzstellen.size() + " Finanzstellen gefunden";
logger.log(Level.INFO, msg); logger.info(msg);
System.out.println(msg); System.out.println(msg);
} }
} }

17
src/de/superx/bin/WebserviceClientBseg.java

@ -6,7 +6,8 @@ import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.Calendar; import java.util.Calendar;
import java.util.logging.Level; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamConstants;
@ -71,7 +72,7 @@ public class WebserviceClientBseg extends AbstractWebserviceClient {
logger.info(msg); logger.info(msg);
System.out.println(msg); System.out.println(msg);
} catch (Exception e) { } catch (Exception e) {
logger.severe(e.getMessage()); logger.error(e.getMessage());
System.out.println("Error " + e.getMessage()); System.out.println("Error " + e.getMessage());
e.printStackTrace(); e.printStackTrace();
LogUtils.close((String) "wc"); LogUtils.close((String) "wc");
@ -85,7 +86,7 @@ public class WebserviceClientBseg extends AbstractWebserviceClient {
Node n = XMLUtils.getFirstNode((Document) configDocument, (String) "url"); Node n = XMLUtils.getFirstNode((Document) configDocument, (String) "url");
url = XMLUtils.getTheValue((Node) n); url = XMLUtils.getTheValue((Node) n);
url = adaptURL(url); url = adaptURL(url);
logger.log(Level.INFO, "URL " + url); logger.info("URL " + url);
System.out.println("URL " + url); System.out.println("URL " + url);
n = XMLUtils.getFirstNode((Document) configDocument, (String) "soap"); n = XMLUtils.getFirstNode((Document) configDocument, (String) "soap");
soap = XMLUtils.getTheValue((Node) n); soap = XMLUtils.getTheValue((Node) n);
@ -99,7 +100,7 @@ public class WebserviceClientBseg extends AbstractWebserviceClient {
i++; i++;
String msg = "starte Aufruf " + i+ " (" + getDateString() + ") "; String msg = "starte Aufruf " + i+ " (" + getDateString() + ") ";
String tmpsoap = getTmpSoap(); String tmpsoap = getTmpSoap();
logger.fine("SOAP Aufruf:\n" + tmpsoap); logger.info("SOAP Aufruf:\n" + tmpsoap);
System.out.print(msg); System.out.print(msg);
tmpFile = createSoapFile(tmpsoap, url); tmpFile = createSoapFile(tmpsoap, url);
msg = " - empfangen "; msg = " - empfangen ";
@ -125,7 +126,7 @@ public class WebserviceClientBseg extends AbstractWebserviceClient {
msg = "Error: Aufruf von Webservice fuer Beseg (" + xmlConfig + ") fehlgeschlagen"; msg = "Error: Aufruf von Webservice fuer Beseg (" + xmlConfig + ") fehlgeschlagen";
System.out.println(msg); System.out.println(msg);
System.out.println(StringUtils.readFile((File) tmpFile)); System.out.println(StringUtils.readFile((File) tmpFile));
logger.severe(msg); logger.error(msg);
LogUtils.close((String) "wc"); LogUtils.close((String) "wc");
System.exit(-1); System.exit(-1);
} }
@ -172,11 +173,11 @@ public class WebserviceClientBseg extends AbstractWebserviceClient {
if (GetOpts.isPresent(Options.opt_noDelete)) { if (GetOpts.isPresent(Options.opt_noDelete)) {
isDeleteTmpXmlFileWanted = false; isDeleteTmpXmlFileWanted = false;
} }
logger.log(Level.INFO, "Geschaeftsjahr " + jahr); logger.info("Geschaeftsjahr " + jahr);
System.out.println("Geschaeftsjahr " + jahr); System.out.println("Geschaeftsjahr " + jahr);
logger.log(Level.INFO, "HSNR " + hsnr); logger.info("HSNR " + hsnr);
System.out.println("HSNR " + hsnr); System.out.println("HSNR " + hsnr);
logger.log(Level.INFO, "Verarbeite " + xmlConfig); logger.info("Verarbeite " + xmlConfig);
System.out.println("Verarbeite " + xmlConfig); System.out.println("Verarbeite " + xmlConfig);
configDocument = XMLUtils.buildDocument((File) new File(xmlConfig)); configDocument = XMLUtils.buildDocument((File) new File(xmlConfig));
} }

16
src/de/superx/bin/WebserviceClientBsegHoh.java

@ -7,8 +7,8 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.Calendar; import java.util.Calendar;
import java.util.logging.Level; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamException;
@ -77,7 +77,7 @@ public class WebserviceClientBsegHoh extends AbstractWebserviceClient {
logger.info(msg); logger.info(msg);
System.out.println(msg); System.out.println(msg);
} catch (Exception e) { } catch (Exception e) {
logger.severe(e.getMessage()); logger.error(e.getMessage());
System.out.println("Error " + e.getMessage()); System.out.println("Error " + e.getMessage());
e.printStackTrace(); e.printStackTrace();
LogUtils.close("wc"); LogUtils.close("wc");
@ -93,7 +93,7 @@ public class WebserviceClientBsegHoh extends AbstractWebserviceClient {
Node n = XMLUtils.getFirstNode(configDocument, "url"); Node n = XMLUtils.getFirstNode(configDocument, "url");
url = XMLUtils.getTheValue(n); url = XMLUtils.getTheValue(n);
url = adaptURL(url); url = adaptURL(url);
logger.fine("URL:" + url); logger.info("URL:" + url);
System.out.println("URL:" + url); System.out.println("URL:" + url);
n = XMLUtils.getFirstNode(configDocument, "soap"); n = XMLUtils.getFirstNode(configDocument, "soap");
soap = XMLUtils.getTheValue(n); soap = XMLUtils.getTheValue(n);
@ -108,7 +108,7 @@ public class WebserviceClientBsegHoh extends AbstractWebserviceClient {
i++; i++;
String msg = "starte Aufruf " + (i) + " (" + getDateString() + ") "; String msg = "starte Aufruf " + (i) + " (" + getDateString() + ") ";
String tmpsoap = getTmpSoap(); String tmpsoap = getTmpSoap();
logger.fine("SOAP Aufruf:\n" + tmpsoap); logger.info("SOAP Aufruf:\n" + tmpsoap);
System.out.print(msg); System.out.print(msg);
// System.out.println(tmpsoap); // System.out.println(tmpsoap);
@ -138,7 +138,7 @@ public class WebserviceClientBsegHoh extends AbstractWebserviceClient {
msg = "Error: Aufruf von Webservice für Beseg " + " (" + xmlConfig + ") fehlgeschlagen"; msg = "Error: Aufruf von Webservice für Beseg " + " (" + xmlConfig + ") fehlgeschlagen";
System.out.println(msg); System.out.println(msg);
System.out.println(StringUtils.readFile(tmpFile)); System.out.println(StringUtils.readFile(tmpFile));
logger.severe(msg); logger.error(msg);
LogUtils.close("wc"); LogUtils.close("wc");
System.exit(-1); System.exit(-1);
} }
@ -192,10 +192,10 @@ public class WebserviceClientBsegHoh extends AbstractWebserviceClient {
if (GetOpts.isPresent(Options.opt_noDelete)) if (GetOpts.isPresent(Options.opt_noDelete))
isDeleteTmpXmlFileWanted = false; isDeleteTmpXmlFileWanted = false;
logger.log(Level.INFO, "Geschaeftsjahr " + jahr); logger.info("Geschaeftsjahr " + jahr);
System.out.println("Geschaeftsjahr " + jahr); System.out.println("Geschaeftsjahr " + jahr);
logger.log(Level.INFO, "Verarbeite " + xmlConfig); logger.info("Verarbeite " + xmlConfig);
System.out.println("Verarbeite " + xmlConfig); System.out.println("Verarbeite " + xmlConfig);
configDocument = XMLUtils.buildDocument(new File(xmlConfig)); configDocument = XMLUtils.buildDocument(new File(xmlConfig));

14
src/de/superx/bin/WebserviceClientFiposGroupsHoh.java

@ -6,8 +6,8 @@ import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.logging.Level; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamException;
@ -71,7 +71,7 @@ public class WebserviceClientFiposGroupsHoh extends AbstractWebserviceClient {
logger.info(msg); logger.info(msg);
System.out.println(msg); System.out.println(msg);
} catch (Exception e) { } catch (Exception e) {
logger.severe(e.getMessage()); logger.error(e.getMessage());
System.out.println("Error " + e.getMessage()); System.out.println("Error " + e.getMessage());
e.printStackTrace(); e.printStackTrace();
LogUtils.close("wc"); LogUtils.close("wc");
@ -87,7 +87,7 @@ public class WebserviceClientFiposGroupsHoh extends AbstractWebserviceClient {
Node n = XMLUtils.getFirstNode(configDocument, "url"); Node n = XMLUtils.getFirstNode(configDocument, "url");
url = XMLUtils.getTheValue(n); url = XMLUtils.getTheValue(n);
url = adaptURL(url); url = adaptURL(url);
logger.fine("URL:" + url); logger.info("URL:" + url);
System.out.println("URL:" + url); System.out.println("URL:" + url);
n = XMLUtils.getFirstNode(configDocument, "soap"); n = XMLUtils.getFirstNode(configDocument, "soap");
soap = XMLUtils.getTheValue(n); soap = XMLUtils.getTheValue(n);
@ -97,7 +97,7 @@ public class WebserviceClientFiposGroupsHoh extends AbstractWebserviceClient {
// n = XMLUtils.getFirstNode(configDocument, datentyp + // n = XMLUtils.getFirstNode(configDocument, datentyp +
// "detailreplacenode"); // "detailreplacenode");
logger.fine("SOAP Aufruf:\n" + soap); logger.info("SOAP Aufruf:\n" + soap);
tmpFile = createSoapFile(soap, url); tmpFile = createSoapFile(soap, url);
@ -122,7 +122,7 @@ public class WebserviceClientFiposGroupsHoh extends AbstractWebserviceClient {
msg = "Error: Aufruf von Webservice für Beseg " + " (" + xmlConfig + ") fehlgeschlagen"; msg = "Error: Aufruf von Webservice für Beseg " + " (" + xmlConfig + ") fehlgeschlagen";
System.out.println(msg); System.out.println(msg);
System.out.println(StringUtils.readFile(tmpFile)); System.out.println(StringUtils.readFile(tmpFile));
logger.severe(msg); logger.error(msg);
LogUtils.close("wc"); LogUtils.close("wc");
System.exit(-1); System.exit(-1);
} }
@ -207,7 +207,7 @@ public class WebserviceClientFiposGroupsHoh extends AbstractWebserviceClient {
if (GetOpts.isPresent(Options.opt_noDelete)) if (GetOpts.isPresent(Options.opt_noDelete))
isDeleteTmpXmlFileWanted = false; isDeleteTmpXmlFileWanted = false;
logger.log(Level.INFO, "Verarbeite " + xmlConfig); logger.info("Verarbeite " + xmlConfig);
System.out.println("Verarbeite " + xmlConfig); System.out.println("Verarbeite " + xmlConfig);
configDocument = XMLUtils.buildDocument(new File(xmlConfig)); configDocument = XMLUtils.buildDocument(new File(xmlConfig));

14
src/de/superx/bin/WebserviceClientHier.java

@ -6,8 +6,8 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Iterator; import java.util.Iterator;
import java.util.logging.Level; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
@ -57,7 +57,7 @@ public class WebserviceClientHier extends AbstractWebserviceClient {
readKostenstellen(hsnr, null); readKostenstellen(hsnr, null);
con.close(); con.close();
} catch (Exception e) { } catch (Exception e) {
logger.severe(e.getMessage()); logger.error(e.getMessage());
System.out.println("Error " + e.getMessage()); System.out.println("Error " + e.getMessage());
e.printStackTrace(); e.printStackTrace();
LogUtils.close("wc"); LogUtils.close("wc");
@ -91,7 +91,7 @@ public class WebserviceClientHier extends AbstractWebserviceClient {
String name = XMLUtils.getChildNodeValue(headertitem, "DESCRIPT"); String name = XMLUtils.getChildNodeValue(headertitem, "DESCRIPT");
String msg = " Kostenstelle " + id + " " + name + " gefunden"; String msg = " Kostenstelle " + id + " " + name + " gefunden";
System.out.println(msg); System.out.println(msg);
logger.log(Level.FINEST, msg); logger.info( msg);
updateDatabase(id, parent, name); updateDatabase(id, parent, name);
Node kids = XMLUtils.getFirstNode(document, "EX_SETNODE"); Node kids = XMLUtils.getFirstNode(document, "EX_SETNODE");
@ -105,7 +105,7 @@ public class WebserviceClientHier extends AbstractWebserviceClient {
} else { } else {
String msg = "Error: Aufruf von Webservice für " + xmlConfig + " fehlgeschlagen:\n" + result; String msg = "Error: Aufruf von Webservice für " + xmlConfig + " fehlgeschlagen:\n" + result;
System.out.println(msg); System.out.println(msg);
logger.severe(msg); logger.error(msg);
LogUtils.close("wc"); LogUtils.close("wc");
System.exit(-1); System.exit(-1);
} }
@ -134,7 +134,7 @@ public class WebserviceClientHier extends AbstractWebserviceClient {
pause = Integer.parseInt(p); pause = Integer.parseInt(p);
System.out.println("Pause between soap calls " + pause); System.out.println("Pause between soap calls " + pause);
} }
logger.log(Level.INFO, "Verarbeite " + xmlConfig); logger.info("Verarbeite " + xmlConfig);
System.out.println("Verarbeite " + xmlConfig); System.out.println("Verarbeite " + xmlConfig);
Document dconf = XMLUtils.buildDocument(new File(xmlConfig)); Document dconf = XMLUtils.buildDocument(new File(xmlConfig));
@ -143,7 +143,7 @@ public class WebserviceClientHier extends AbstractWebserviceClient {
n = XMLUtils.getFirstNode(dconf, "wsurl"); n = XMLUtils.getFirstNode(dconf, "wsurl");
wsurl = XMLUtils.getTheValue(n); wsurl = XMLUtils.getTheValue(n);
wsurl = adaptURL(wsurl); wsurl = adaptURL(wsurl);
logger.fine("URL:" + wsurl); logger.info("URL:" + wsurl);
System.out.println("URL:" + wsurl); System.out.println("URL:" + wsurl);
n = XMLUtils.getFirstNode(dconf, "hiersoap"); n = XMLUtils.getFirstNode(dconf, "hiersoap");
hierSOAP = XMLUtils.getTheValue(n); hierSOAP = XMLUtils.getTheValue(n);

18
src/de/superx/bin/WebserviceClientKenn.java

@ -6,8 +6,8 @@ import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.logging.Level; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamException;
@ -72,7 +72,7 @@ public class WebserviceClientKenn extends AbstractWebserviceClient {
logger.info(msg); logger.info(msg);
System.out.println(msg); System.out.println(msg);
} catch (Exception e) { } catch (Exception e) {
logger.severe(e.getMessage()); logger.error(e.getMessage());
System.out.println("Error " + e.getMessage()); System.out.println("Error " + e.getMessage());
e.printStackTrace(); e.printStackTrace();
LogUtils.close("wc"); LogUtils.close("wc");
@ -87,7 +87,7 @@ public class WebserviceClientKenn extends AbstractWebserviceClient {
Node n = XMLUtils.getFirstNode(configDocument, datentyp + "_url"); Node n = XMLUtils.getFirstNode(configDocument, datentyp + "_url");
url = XMLUtils.getTheValue(n); url = XMLUtils.getTheValue(n);
url = adaptURL(url); url = adaptURL(url);
logger.fine("URL:" + url); logger.info("URL:" + url);
System.out.println("URL:" + url); System.out.println("URL:" + url);
n = XMLUtils.getFirstNode(configDocument, datentyp + "_soap"); n = XMLUtils.getFirstNode(configDocument, datentyp + "_soap");
String return_node_name = XMLUtils.getAttribValue(n, "return_node_name"); String return_node_name = XMLUtils.getAttribValue(n, "return_node_name");
@ -98,7 +98,7 @@ public class WebserviceClientKenn extends AbstractWebserviceClient {
initOutFile(); initOutFile();
logger.fine(datentyp + "\nSOAP Aufruf:\n" + soap); logger.info(datentyp + "\nSOAP Aufruf:\n" + soap);
tmpFile = createSoapFile(soap, url); tmpFile = createSoapFile(soap, url);
@ -126,7 +126,7 @@ public class WebserviceClientKenn extends AbstractWebserviceClient {
msg += "\n url:" + url + "\nsoap:" + soap + "\n"; msg += "\n url:" + url + "\nsoap:" + soap + "\n";
System.out.println(msg); System.out.println(msg);
System.out.println(StringUtils.readFile(tmpFile)); System.out.println(StringUtils.readFile(tmpFile));
logger.severe(msg); logger.error(msg);
LogUtils.close("wc"); LogUtils.close("wc");
System.exit(-1); System.exit(-1);
} }
@ -149,13 +149,13 @@ public class WebserviceClientKenn extends AbstractWebserviceClient {
if (GetOpts.isPresent(Options.opt_noDelete)) if (GetOpts.isPresent(Options.opt_noDelete))
isDeleteTmpXmlFileWanted = false; isDeleteTmpXmlFileWanted = false;
if (Integer.parseInt(jahr_oder_semester) < 10000) { if (Integer.parseInt(jahr_oder_semester) < 10000) {
logger.log(Level.INFO, "Geschaeftsjahr " + jahr_oder_semester); logger.info("Geschaeftsjahr " + jahr_oder_semester);
System.out.println("Geschaeftsjahr " + jahr_oder_semester); System.out.println("Geschaeftsjahr " + jahr_oder_semester);
} else { } else {
logger.log(Level.INFO, "Semester " + jahr_oder_semester); logger.info("Semester " + jahr_oder_semester);
System.out.println("Semester " + jahr_oder_semester); System.out.println("Semester " + jahr_oder_semester);
} }
logger.log(Level.INFO, "Verarbeite " + datentyp + " " + xmlConfig); logger.info("Verarbeite " + datentyp + " " + xmlConfig);
System.out.println("Verarbeite " + datentyp + " " + xmlConfig); System.out.println("Verarbeite " + datentyp + " " + xmlConfig);
configDocument = XMLUtils.buildDocument(new File(xmlConfig)); configDocument = XMLUtils.buildDocument(new File(xmlConfig));

18
src/de/superx/bin/WebserviceClientSummendaten.java

@ -10,8 +10,8 @@ import java.sql.Statement;
import java.util.Collection; import java.util.Collection;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.logging.Level; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
@ -74,7 +74,7 @@ public class WebserviceClientSummendaten extends AbstractWebserviceClient {
logger.info(msg); logger.info(msg);
System.out.println(msg); System.out.println(msg);
} catch (Exception e) { } catch (Exception e) {
logger.severe(e.getMessage()); logger.error(e.getMessage());
System.out.println("Error " + e.getMessage()); System.out.println("Error " + e.getMessage());
e.printStackTrace(); e.printStackTrace();
LogUtils.close("wc"); LogUtils.close("wc");
@ -106,7 +106,7 @@ public class WebserviceClientSummendaten extends AbstractWebserviceClient {
} }
String msg = finanzstellen.size() + " Finanzstellen gefunden"; String msg = finanzstellen.size() + " Finanzstellen gefunden";
logger.log(Level.INFO, msg); logger.info( msg);
System.out.println(msg); System.out.println(msg);
} }
@ -115,7 +115,7 @@ public class WebserviceClientSummendaten extends AbstractWebserviceClient {
Node n = XMLUtils.getFirstNode(configDocument, datentyp + "sumurl"); Node n = XMLUtils.getFirstNode(configDocument, datentyp + "sumurl");
url = XMLUtils.getTheValue(n); url = XMLUtils.getTheValue(n);
url = adaptURL(url); url = adaptURL(url);
logger.fine("URL:" + url); logger.info("URL:" + url);
System.out.println("URL:" + url); System.out.println("URL:" + url);
n = XMLUtils.getFirstNode(configDocument, datentyp + "sumsoap"); n = XMLUtils.getFirstNode(configDocument, datentyp + "sumsoap");
soap = XMLUtils.getTheValue(n); soap = XMLUtils.getTheValue(n);
@ -125,7 +125,7 @@ public class WebserviceClientSummendaten extends AbstractWebserviceClient {
n = XMLUtils.getFirstNode(configDocument, datentyp + "sumreplacenode"); n = XMLUtils.getFirstNode(configDocument, datentyp + "sumreplacenode");
replaceNodeName = XMLUtils.getAttribValue(n, "from"); replaceNodeName = XMLUtils.getAttribValue(n, "from");
logger.fine(datentyp + "\nSOAP Aufruf:\n" + soap); logger.info(datentyp + "\nSOAP Aufruf:\n" + soap);
// Schleife über Kostenstellen // Schleife über Kostenstellen
Iterator<String> it = finanzstellen.iterator(); Iterator<String> it = finanzstellen.iterator();
@ -144,7 +144,7 @@ public class WebserviceClientSummendaten extends AbstractWebserviceClient {
String msg = "Error: Aufruf von Webservice fuer Summendaten " + datentyp + " (" + xmlConfig + ") FISTL:" String msg = "Error: Aufruf von Webservice fuer Summendaten " + datentyp + " (" + xmlConfig + ") FISTL:"
+ fistl + " fehlgeschlagen\n" + result; + fistl + " fehlgeschlagen\n" + result;
System.out.println(msg); System.out.println(msg);
logger.severe(msg); logger.error(msg);
LogUtils.close("wc"); LogUtils.close("wc");
System.exit(-1); System.exit(-1);
} }
@ -186,10 +186,10 @@ public class WebserviceClientSummendaten extends AbstractWebserviceClient {
logger.info("\nHochschulnummer " + hsnr); logger.info("\nHochschulnummer " + hsnr);
if (GetOpts.isPresent(Options.opt_noDelete)) if (GetOpts.isPresent(Options.opt_noDelete))
isDeleteTmpXmlFileWanted = false; isDeleteTmpXmlFileWanted = false;
logger.log(Level.INFO, "Geschaeftsjahr " + jahr); logger.info( "Geschaeftsjahr " + jahr);
System.out.println("Geschaeftsjahr " + jahr); System.out.println("Geschaeftsjahr " + jahr);
logger.log(Level.INFO, "Verarbeite " + xmlConfig); logger.info( "Verarbeite " + xmlConfig);
System.out.println("Verarbeite " + xmlConfig); System.out.println("Verarbeite " + xmlConfig);
configDocument = XMLUtils.buildDocument(new File(xmlConfig)); configDocument = XMLUtils.buildDocument(new File(xmlConfig));

6
src/de/superx/bin/XUpdater.java

@ -5,8 +5,8 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Statement; import java.sql.Statement;
import java.util.logging.Level; import org.slf4j.Logger;
import java.util.logging.Logger; import org.slf4j.LoggerFactory;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@ -146,7 +146,7 @@ public class XUpdater {
if (database.equals("") || database.equals(databaseAbbr)) { if (database.equals("") || database.equals(databaseAbbr)) {
sql = XMLUtils.getTheValue(n); sql = XMLUtils.getTheValue(n);
logger.log(Level.FINER, " execute SQL from XUpdater:" + sql); logger.info(" execute SQL from XUpdater:" + sql);
stm.execute(sql); stm.execute(sql);
} }
} }

6
src/de/superx/db/HikariSqlExceptionOverride.java

@ -12,7 +12,11 @@ public class HikariSqlExceptionOverride implements SQLExceptionOverride {
String sqlState = sqlException.getSQLState(); String sqlState = sqlException.getSQLState();
// PostgreSQL liefert bei sowas wie "TRUNCATE TABLE...." ohne CASCADE ein "Feature unsupported" (0A000) // PostgreSQL liefert bei sowas wie "TRUNCATE TABLE...." ohne CASCADE ein "Feature unsupported" (0A000)
// wir wollen aber, dass danach die Connection weiterverwendet werden kann! // wir wollen aber, dass danach die Connection weiterverwendet werden kann!
return "0A000".equals(sqlState) ? Override.DO_NOT_EVICT : defaultOverride; boolean do_not_evict = "0A000".equals(sqlState);
// Informix liefert bei einem INSERT INTO...SELECT mit leerem Ergebnis im SELECT ein "IX000:
// auch das wollen wir nicht als Fehler werten!
do_not_evict = do_not_evict || "IX000".equals(sqlState);
return do_not_evict ? Override.DO_NOT_EVICT : defaultOverride;
} }
} }

46
src/de/superx/db/export/ExportConfig.java

@ -0,0 +1,46 @@
package de.superx.db.export;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Root configuration containing all export table groups.
* Parsed from the export-tables.xml configuration file.
*/
public class ExportConfig {
private final List<ExportGroup> groups;
public ExportConfig(List<ExportGroup> groups) {
this.groups = Collections.unmodifiableList(new ArrayList<>(groups));
}
public List<ExportGroup> getGroups() {
return groups;
}
/**
* Find a group by name.
* @return the matching group, or null if not found
*/
public ExportGroup getGroup(String name) {
for (ExportGroup group : groups) {
if (group.getName().equals(name)) {
return group;
}
}
return null;
}
/**
* @return all group names defined in this configuration
*/
public List<String> getGroupNames() {
List<String> names = new ArrayList<>();
for (ExportGroup group : groups) {
names.add(group.getName());
}
return names;
}
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save