diff --git a/build.xml b/build.xml
new file mode 100644
index 0000000..d3a640e
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src-modules/module/sxc/conf/excludes.txt b/src-modules/module/sxc/conf/excludes.txt
new file mode 100644
index 0000000..3ab2249
--- /dev/null
+++ b/src-modules/module/sxc/conf/excludes.txt
@@ -0,0 +1,10 @@
+rohdaten/ETL_ENV
+rohdaten/*.properties
+preparation.sql
+finalize.sql
+rohdaten/*.err
+*.log
+*.err
+rohdaten/unl/*
+conf/customize.sql
+conf/*.log
diff --git a/src-modules/module/sxc/conf/includes.txt b/src-modules/module/sxc/conf/includes.txt
new file mode 100644
index 0000000..32169c5
--- /dev/null
+++ b/src-modules/module/sxc/conf/includes.txt
@@ -0,0 +1,11 @@
+doku/rpta_modul/rpta.html
+WEB-INF/conf/edustore/db/bin/SQL_ENV_rpta.sam
+images/icons/file-excel_rpta.svg
+images/icons/magic.svg
+WEB-INF/conf/edustore/db/module/rpta/schluesseltabellen/sx_stylesheets_einfuegen.sql
+WEB-INF/lib/superx-rpta.jar
+WEB-INF/reports/simple_table.jrtx
+xml/tabelle_jrxml_a4_quer.xsl
+xml/tabelle_jrxml_book_without_cover.xsl
+xml/rpta_templates.xsl
+xml/rpta_assistent.xsl
diff --git a/src-modules/module/sxc/conf/sxc.xml b/src-modules/module/sxc/conf/sxc.xml
new file mode 100644
index 0000000..ba3eaee
--- /dev/null
+++ b/src-modules/module/sxc/conf/sxc.xml
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Abfragen zur Administration von SuperX-Connect
+
+
+
+
+
+ $SXC_PFAD/masken
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src-modules/module/sxc/etl/genesis/21311-0002_stud_sem_da_geschl_hs/import.kjb b/src-modules/module/sxc/etl/genesis/21311-0002_stud_sem_da_geschl_hs/import.kjb
new file mode 100644
index 0000000..869c056
--- /dev/null
+++ b/src-modules/module/sxc/etl/genesis/21311-0002_stud_sem_da_geschl_hs/import.kjb
@@ -0,0 +1,459 @@
+
+ import
+
+
+
+ 0
+ /
+ -
+ 2019/03/19 11:15:05.289
+ -
+ 2019/03/19 11:15:05.289
+
+
+ PATH_TO_UPLOADFILE
+ file:///home/superx/git/Memtext-Interna/uebergreifende_Projekte/2023_superxconnect/muster/destatis/studierende/21311-0002_de_flat.csv
+
+
+
+
+
+
+
+
+
+
+
+
+ ID_JOB
+ Y
+ ID_JOB
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ JOBNAME
+ Y
+ JOBNAME
+
+
+ STATUS
+ Y
+ STATUS
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ STARTDATE
+ Y
+ STARTDATE
+
+
+ ENDDATE
+ Y
+ ENDDATE
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ DEPDATE
+ Y
+ DEPDATE
+
+
+ REPLAYDATE
+ Y
+ REPLAYDATE
+
+
+ LOG_FIELD
+ Y
+ LOG_FIELD
+
+
+ EXECUTING_SERVER
+ N
+ EXECUTING_SERVER
+
+
+ EXECUTING_USER
+ N
+ EXECUTING_USER
+
+
+ START_JOB_ENTRY
+ N
+ START_JOB_ENTRY
+
+
+ CLIENT
+ N
+ CLIENT
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ JOBNAME
+ Y
+ TRANSNAME
+
+
+ JOBENTRYNAME
+ Y
+ STEPNAME
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ RESULT
+ Y
+ RESULT
+
+
+ NR_RESULT_ROWS
+ Y
+ NR_RESULT_ROWS
+
+
+ NR_RESULT_FILES
+ Y
+ NR_RESULT_FILES
+
+
+ LOG_FIELD
+ N
+ LOG_FIELD
+
+
+ COPY_NR
+ N
+ COPY_NR
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ LOGGING_OBJECT_TYPE
+ Y
+ LOGGING_OBJECT_TYPE
+
+
+ OBJECT_NAME
+ Y
+ OBJECT_NAME
+
+
+ OBJECT_COPY
+ Y
+ OBJECT_COPY
+
+
+ REPOSITORY_DIRECTORY
+ Y
+ REPOSITORY_DIRECTORY
+
+
+ FILENAME
+ Y
+ FILENAME
+
+
+ OBJECT_ID
+ Y
+ OBJECT_ID
+
+
+ OBJECT_REVISION
+ Y
+ OBJECT_REVISION
+
+
+ PARENT_CHANNEL_ID
+ Y
+ PARENT_CHANNEL_ID
+
+
+ ROOT_CHANNEL_ID
+ Y
+ ROOT_CHANNEL_ID
+
+
+ N
+
+
+
+ import_21311-0002_de_flat
+
+ TRANS
+ filename
+
+ ${Internal.Job.Filename.Directory}/import_21311-0002_de_flat.ktr
+
+ N
+ N
+ N
+ N
+ N
+ N
+
+
+ N
+ N
+ Basic
+ N
+
+ N
+ Y
+ N
+ N
+ N
+
+ Y
+
+ N
+ Y
+ 0
+ 304
+ 80
+
+
+ START
+
+ SPECIAL
+ Y
+ N
+ N
+ 0
+ 0
+ 60
+ 12
+ 0
+ 1
+ 1
+ N
+ Y
+ 0
+ 128
+ 80
+
+
+ Success
+
+ SUCCESS
+ N
+ Y
+ 0
+ 800
+ 192
+
+
+ insert
+
+ SQL
+ truncate table sxc_stud_sem_da_geschl_hs;
+
+insert into sxc_stud_sem_da_geschl_hs(
+statistik_code,
+ statistik_label,
+ zeit_code,
+ zeit_label,
+ zeit,
+ semester,
+ merkmal_code_1,
+ merkmal_label_1,
+ auspraegung_code_1,
+ auspraegung_label_1,
+ merkmal_code_2,
+ merkmal_label_2,
+ auspraegung_code_2,
+ auspraegung_label_2,
+ merkmal_code_3,
+ merkmal_label_3,
+ auspraegung_code_3,
+ auspraegung_label_3,
+ merkmal_code_4,
+ merkmal_label_4,
+ auspraegung_code_4,
+ auspraegung_label_4,
+ bil002__studierende__anzahl,
+ bil002__studierende__q)
+ select statistik_code,
+ statistik_label,
+ zeit_code,
+ zeit_label,
+ zeit,
+ val(substring(zeit from 4 for 4) || '2') as semester,
+ merkmal_code_1,
+ merkmal_label_1,
+ auspraegung_code_1,
+ auspraegung_label_1,
+ merkmal_code_2,
+ merkmal_label_2,
+ auspraegung_code_2,
+ auspraegung_label_2,
+ merkmal_code_3,
+ merkmal_label_3,
+ auspraegung_code_3,
+ auspraegung_label_3,
+ merkmal_code_4,
+ merkmal_label_4,
+ val(substring(auspraegung_code_4 from 3 for 4)) as hs_nr,
+ auspraegung_label_4,
+ bil002__studierende__anzahl,
+ bil002__studierende__q
+FROM sxc_stud_sem_da_geschl_hs_neu
+ ;
+
+
+ F
+ F
+
+ F
+ eduetl
+ N
+ Y
+ 0
+ 576
+ 128
+
+
+
+
+ START
+ import_21311-0002_de_flat
+ 0
+ 0
+ Y
+ Y
+ Y
+
+
+ import_21311-0002_de_flat
+ insert
+ 0
+ 0
+ Y
+ Y
+ N
+
+
+ insert
+ Success
+ 0
+ 0
+ Y
+ Y
+ N
+
+
+
+
diff --git a/src-modules/module/sxc/etl/genesis/21311-0002_stud_sem_da_geschl_hs/import_21311-0002_de_flat.ktr b/src-modules/module/sxc/etl/genesis/21311-0002_stud_sem_da_geschl_hs/import_21311-0002_de_flat.ktr
new file mode 100644
index 0000000..01fc307
--- /dev/null
+++ b/src-modules/module/sxc/etl/genesis/21311-0002_stud_sem_da_geschl_hs/import_21311-0002_de_flat.ktr
@@ -0,0 +1,1016 @@
+
+
+ import_sxc_stud_sem_da_geschl_hs
+
+
+
+ Normal
+ 0
+ /
+
+
+ PATH_TO_UPLOADFILE
+ file:///home/superx/git/Memtext-Interna/uebergreifende_Projekte/2023_superxconnect/muster/destatis/studierende/21311-0002_de_flat.csv
+
+
+
+
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STATUS
+ Y
+ STATUS
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ STARTDATE
+ Y
+ STARTDATE
+
+
+ ENDDATE
+ Y
+ ENDDATE
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ DEPDATE
+ Y
+ DEPDATE
+
+
+ REPLAYDATE
+ Y
+ REPLAYDATE
+
+
+ LOG_FIELD
+ Y
+ LOG_FIELD
+
+
+ EXECUTING_SERVER
+ N
+ EXECUTING_SERVER
+
+
+ EXECUTING_USER
+ N
+ EXECUTING_USER
+
+
+ CLIENT
+ N
+ CLIENT
+
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ SEQ_NR
+ Y
+ SEQ_NR
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STEPNAME
+ Y
+ STEPNAME
+
+
+ STEP_COPY
+ Y
+ STEP_COPY
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ INPUT_BUFFER_ROWS
+ Y
+ INPUT_BUFFER_ROWS
+
+
+ OUTPUT_BUFFER_ROWS
+ Y
+ OUTPUT_BUFFER_ROWS
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ LOGGING_OBJECT_TYPE
+ Y
+ LOGGING_OBJECT_TYPE
+
+
+ OBJECT_NAME
+ Y
+ OBJECT_NAME
+
+
+ OBJECT_COPY
+ Y
+ OBJECT_COPY
+
+
+ REPOSITORY_DIRECTORY
+ Y
+ REPOSITORY_DIRECTORY
+
+
+ FILENAME
+ Y
+ FILENAME
+
+
+ OBJECT_ID
+ Y
+ OBJECT_ID
+
+
+ OBJECT_REVISION
+ Y
+ OBJECT_REVISION
+
+
+ PARENT_CHANNEL_ID
+ Y
+ PARENT_CHANNEL_ID
+
+
+ ROOT_CHANNEL_ID
+ Y
+ ROOT_CHANNEL_ID
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STEPNAME
+ Y
+ STEPNAME
+
+
+ STEP_COPY
+ Y
+ STEP_COPY
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ LOG_FIELD
+ N
+ LOG_FIELD
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ METRICS_DATE
+ Y
+ METRICS_DATE
+
+
+ METRICS_CODE
+ Y
+ METRICS_CODE
+
+
+ METRICS_DESCRIPTION
+ Y
+ METRICS_DESCRIPTION
+
+
+ METRICS_SUBJECT
+ Y
+ METRICS_SUBJECT
+
+
+ METRICS_TYPE
+ Y
+ METRICS_TYPE
+
+
+ METRICS_VALUE
+ Y
+ METRICS_VALUE
+
+
+
+
+
+
+
+ 0.0
+ 0.0
+
+ 10000
+ 50
+ 50
+ N
+ Y
+ 50000
+ Y
+
+ N
+ 1000
+ 100
+
+
+
+
+ -
+ 2019/03/19 10:12:30.193
+ -
+ 2019/03/19 10:12:30.193
+ H4sIAAAAAAAAAAMAAAAAAAAAAAA=
+ N
+
+
+
+
+ Text file input
+ write_sxc_stud_sem_da_geschl_hs
+ Y
+
+
+
+ Text file input
+ TextFileInput
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+ N
+
+
+ ;
+ "
+ N
+
+
+ 1
+
+ 1
+ N
+ 1
+ N
+ 80
+ 0
+ Y
+ N
+
+ N
+ N
+
+ mixed
+ UTF-8
+ Y
+
+ ${PATH_TO_UPLOADFILE}
+
+
+ N
+ N
+
+
+
+ N
+ N
+ CSV
+ None
+
+
+
+
+ Statistik_Code
+ Integer
+ #
+ €
+ ,
+ .
+ -
+
+ -1
+ 15
+ 0
+ none
+ N
+
+
+ Statistik_Label
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 23
+ -1
+ none
+ N
+
+
+ Zeit_Code
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 6
+ -1
+ none
+ N
+
+
+ Zeit_Label
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 8
+ -1
+ none
+ N
+
+
+ Zeit
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 10
+ -1
+ none
+ N
+
+
+ 1_Merkmal_Code
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 5
+ -1
+ none
+ N
+
+
+ 1_Merkmal_Label
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 21
+ -1
+ none
+ N
+
+
+ 1_Auspraegung_Code
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 2
+ -1
+ none
+ N
+
+
+ 1_Auspraegung_Label
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 11
+ -1
+ none
+ N
+
+
+ 2_Merkmal_Code
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 3
+ -1
+ none
+ N
+
+
+ 2_Merkmal_Label
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 12
+ -1
+ none
+ N
+
+
+ 2_Auspraegung_Code
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 4
+ -1
+ none
+ N
+
+
+ 2_Auspraegung_Label
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 8
+ -1
+ none
+ N
+
+
+ 3_Merkmal_Code
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 3
+ -1
+ none
+ N
+
+
+ 3_Merkmal_Label
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 10
+ -1
+ none
+ N
+
+
+ 3_Auspraegung_Code
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 4
+ -1
+ none
+ N
+
+
+ 3_Auspraegung_Label
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 8
+ -1
+ none
+ N
+
+
+ 4_Merkmal_Code
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 6
+ -1
+ none
+ N
+
+
+ 4_Merkmal_Label
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 11
+ -1
+ none
+ N
+
+
+ 4_Auspraegung_Code
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 6
+ -1
+ none
+ N
+
+
+ 4_Auspraegung_Label
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 50
+ -1
+ none
+ N
+
+
+ BIL002__Studierende__Anzahl
+ Integer
+ #
+ €
+ ,
+ .
+ -
+
+ -1
+ 15
+ 0
+ none
+ N
+
+
+ BIL002__Studierende__q
+ String
+
+ €
+ ,
+ .
+ -
+
+ -1
+ 1
+ -1
+ none
+ N
+
+
+ 0
+ N
+ N
+
+
+ N
+
+
+
+
+ warning
+
+ error
+
+ line
+ Y
+ de_DE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 128
+ 128
+ Y
+
+
+
+ write_sxc_stud_sem_da_geschl_hs
+ TableOutput
+
+ Y
+
+ 1
+
+ none
+
+
+ eduetl
+
+ sxc_stud_sem_da_geschl_hs_neu
+ 1000
+ Y
+ N
+ N
+ Y
+ N
+
+ N
+ Y
+ N
+
+ Y
+ N
+
+
+
+ statistik_label
+ Statistik_Label
+
+
+ zeit_code
+ Zeit_Code
+
+
+ zeit_label
+ Zeit_Label
+
+
+ zeit
+ Zeit
+
+
+ merkmal_code_1
+ 1_Merkmal_Code
+
+
+ merkmal_label_1
+ 1_Merkmal_Label
+
+
+ auspraegung_code_1
+ 1_Auspraegung_Code
+
+
+ auspraegung_label_1
+ 1_Auspraegung_Label
+
+
+ merkmal_code_2
+ 2_Merkmal_Code
+
+
+ merkmal_label_2
+ 2_Merkmal_Label
+
+
+ auspraegung_code_2
+ 2_Auspraegung_Code
+
+
+ auspraegung_label_2
+ 2_Auspraegung_Label
+
+
+ merkmal_code_3
+ 3_Merkmal_Code
+
+
+ merkmal_label_3
+ 3_Merkmal_Label
+
+
+ auspraegung_code_3
+ 3_Auspraegung_Code
+
+
+ auspraegung_label_3
+ 3_Auspraegung_Label
+
+
+ merkmal_code_4
+ 4_Merkmal_Code
+
+
+ merkmal_label_4
+ 4_Merkmal_Label
+
+
+ auspraegung_code_4
+ 4_Auspraegung_Code
+
+
+ auspraegung_label_4
+ 4_Auspraegung_Label
+
+
+ bil002__studierende__anzahl
+ BIL002__Studierende__Anzahl
+
+
+ bil002__studierende__q
+ BIL002__Studierende__q
+
+
+ statistik_code
+ Statistik_Code
+
+
+
+
+
+
+
+
+ 352
+ 192
+ Y
+
+
+
+
+ N
+
diff --git a/src-modules/module/sxc/masken/47000_felderinfo.unl b/src-modules/module/sxc/masken/47000_felderinfo.unl
new file mode 100644
index 0000000..1ee2fdf
--- /dev/null
+++ b/src-modules/module/sxc/masken/47000_felderinfo.unl
@@ -0,0 +1,3 @@
+47000^Hochschule^0^0^0^100^150^1^char^30^0^12^<> select tid, type, name,sortnr from sichten where art in('KENN-Kostenstellen-Sicht','KENN-Hochschulen-Sicht') order by sortnr, name;^^ ^
+47001^Seit Semester^1^0^0^130^80^1^integer^30^0^1^<> select tid,druck from kenn_semester order by tid DESC;^^<> select tid,druck from kenn_semester where today() between sem_beginn and sem_ende;^
+47007^Bis Semester^3^330^-1^130^100^1^integer^30^0^1^<> select tid,druck from kenn_semester order by tid DESC;^ ^<> select tid,druck from kenn_semester where today() between sem_beginn and sem_ende;^
diff --git a/src-modules/module/sxc/masken/47000_maske_system_bez.unl b/src-modules/module/sxc/masken/47000_maske_system_bez.unl
new file mode 100644
index 0000000..6bfcda6
--- /dev/null
+++ b/src-modules/module/sxc/masken/47000_maske_system_bez.unl
@@ -0,0 +1 @@
+47000^360^
diff --git a/src-modules/module/sxc/masken/47000_masken_felder_bez.unl b/src-modules/module/sxc/masken/47000_masken_felder_bez.unl
new file mode 100644
index 0000000..0ae1e6d
--- /dev/null
+++ b/src-modules/module/sxc/masken/47000_masken_felder_bez.unl
@@ -0,0 +1,3 @@
+47000^47000^
+47000^47001^
+47000^47007^
diff --git a/src-modules/module/sxc/masken/47000_maskeninfo.unl b/src-modules/module/sxc/masken/47000_maskeninfo.unl
new file mode 100644
index 0000000..9861e95
--- /dev/null
+++ b/src-modules/module/sxc/masken/47000_maskeninfo.unl
@@ -0,0 +1,123 @@
+47000^Studierende nach Geschlecht und Nationalität^--Freemarker Template\
+<#include "SQL_lingua_franca"/>\
+<#include "SuperX_general"/>\
+\
+create temp table tmp_studis1 \
+(semester integer,\
+hs_nr integer,\
+spalte char(255),\
+m_gesamt integer, w_gesamt integer,\
+d_gesamt integer, a_gesamt integer)\
+ <@informixnolog/>;\
+\
+create temp table tmp_studis2 \
+(semester integer,\
+semester_str varchar(255),\
+hs_nr integer,\
+gesamt integer,\
+m_gesamt integer, w_gesamt integer,\
+d_gesamt integer, a_gesamt integer)\
+ <@informixnolog/>;\
+\
+\
+\
+insert into tmp_studis1(semester,\
+hs_nr ,\
+m_gesamt, \
+w_gesamt ,\
+d_gesamt,\
+a_gesamt)\
+select semester,\
+hs_nr,\
+(case when auspraegung_code_3='GESM' then bil002__studierende__anzahl else 0 end) as m_gesamt,\
+(case when auspraegung_code_3='GESW' then bil002__studierende__anzahl else 0 end) as w_gesamt,\
+(case when auspraegung_code_2='NATD' then bil002__studierende__anzahl else 0 end) as d_gesamt,\
+(case when auspraegung_code_2='NATA' then bil002__studierende__anzahl else 0 end) as a_gesamt\
+ from sxc_stud_sem_da_geschl_hs\
+ where bil002__studierende__q='e' --endgültiger Wert\
+/* and semester >= <>*/\
+/* and semester <= <> */\
+/* and hs_nr::varchar(255) in <@printkeys Hochschule.allNeededKeysList/> --<> */\
+;\
+ \
+ \
+ \
+\
+insert into tmp_studis2(semester,\
+semester_str ,\
+gesamt,\
+m_gesamt, \
+w_gesamt ,\
+d_gesamt,\
+a_gesamt)\
+select S.semester,K.druck,\
+sum(m_gesamt) + sum(w_gesamt),\
+ sum(w_gesamt),\
+ sum(m_gesamt),\
+ sum(d_gesamt),\
+ sum(a_gesamt)\
+from tmp_studis1 S, kenn_semester K\
+where K.tid=S.semester\
+group by 1,2;\
+drop table tmp_studis1;\
+\
+-- Falls Division durch 0 vorkommen sollte, Division durch NULL ist möglich\
+update tmp_studis2\
+set gesamt = null where gesamt = 0;\
+\
+select trim(semester_str), \
+gesamt,\
+w_gesamt,\
+m_gesamt,\
+'' || w_gesamt || '|' || gesamt as _graphbarright_w_gesamt,\
+'' || m_gesamt || '|' || gesamt as _graphbarleft_m_gesamt,\
+round((100*w_gesamt)::decimal(21,9)/gesamt,2) as frauenanteil,\
+d_gesamt,\
+a_gesamt,\
+'' || d_gesamt || '|' || gesamt as _graphbarright_d_gesamt,\
+'' || a_gesamt || '|' || gesamt as _graphbarleft_a_gesamt,\
+round((100*a_gesamt)::decimal(21,9)/gesamt,2) as auslanteil\
+from tmp_studis2 \
+order by semester desc ;^XIL List\
+ sizable_columns horizontal_scrolling\
+ white_space_color=COLOR_WHITE fixed_columns=1\
+ drop_and_delete movable_columns\
+ min_heading_height=55\
+Column CID=0 heading_text="Semester" explanation="@@@sos_semester@@@" center_heading\
+ row_selectable heading_platform readonly\
+ width=10\
+Column CID=1 heading_text="Gesamtzahl" explanation="@@@sos_gesamtzahl@@@" center_heading\
+ row_selectable col_selectable rightJust heading_platform\
+ readonly\
+ width=8\
+Column CID=2 heading_text="Studierende nach Geschlecht\\000weiblich" explanation="" center_heading\
+ row_selectable col_selectable rightJust heading_platform readonly\
+ width=8\
+Column CID=2 heading_text="Studierende nach Geschlecht\\000männlich" explanation="" center_heading\
+ row_selectable col_selectable rightJust heading_platform readonly\
+ width=8\
+Column CID=2 heading_text="Studierende nach Geschlecht\\000weiblich\\n(graphisch)" explanation="" center_heading\
+ row_selectable col_selectable rightJust heading_platform readonly\
+ width=8\
+Column CID=2 heading_text="Studierende nach Geschlecht\\000männlich\\n(graphisch)" explanation="" center_heading\
+ row_selectable col_selectable rightJust heading_platform readonly\
+ width=8\
+Column CID=3 heading_text="Studierende nach Geschlecht\\000Anteil weibl. in %" explanation="" center_heading\
+ row_selectable col_selectable rightJust heading_platform readonly\
+ width=8\
+Column CID=2 heading_text="Studierende nach Nationalität\\000Deutsch" explanation="" center_heading\
+ row_selectable col_selectable rightJust heading_platform readonly\
+ width=8\
+Column CID=2 heading_text="Studierende nach Nationalität\\000Ausland" explanation="" center_heading\
+ row_selectable col_selectable rightJust heading_platform readonly\
+ width=8\
+Column CID=2 heading_text="Studierende nach Nationalität\\000Deutsch\\n(graphisch)" explanation="" center_heading\
+ row_selectable col_selectable rightJust heading_platform readonly\
+ width=8\
+Column CID=2 heading_text="Studierende nach Nationalität\\000Ausland\\n(graphisch)" explanation="" center_heading\
+ row_selectable col_selectable rightJust heading_platform readonly\
+ width=8\
+Column CID=3 heading_text="Studierende nach Nationalität\\000Anteil Ausland in %" explanation="" center_heading\
+ row_selectable col_selectable rightJust heading_platform readonly\
+ width=8\
+@@@^Semester^Anzahl^je Semester mit Geschlechtsangabe und Prozentwert^drop table tmp_studis2;^-leer-^3^700^360^0^1^<> select distinct 'Quelle: Destatis Tabelle ' || statistik_label || '(' || statistik_code || ')' from sxc_stud_sem_da_geschl_hs^
diff --git a/src-modules/module/sxc/masken/47000_sachgeb_maske_bez.unl b/src-modules/module/sxc/masken/47000_sachgeb_maske_bez.unl
new file mode 100644
index 0000000..6aa903d
--- /dev/null
+++ b/src-modules/module/sxc/masken/47000_sachgeb_maske_bez.unl
@@ -0,0 +1 @@
+360^47000^
diff --git a/src-modules/module/sxc/schluesseltabellen/sx_stylesheets_einfuegen.sql b/src-modules/module/sxc/schluesseltabellen/sx_stylesheets_einfuegen.sql
new file mode 100755
index 0000000..dd08db5
--- /dev/null
+++ b/src-modules/module/sxc/schluesseltabellen/sx_stylesheets_einfuegen.sql
@@ -0,0 +1,205 @@
+--Freemarker Template
+--Achtung: Macro fügt Inhalte ein
+--Bitte nur Freemarker Variablen füllen
+
+<#assign masken = [
+] />
+
+<#assign stylesheet = [
+
+] />
+
+<#assign stylesheet_field = [
+
+
+] />
+
+--Hier eventuell notwendige delete's auf die Tabellen sx_mask_style, sx_stylesheets oder stylesheet_field einfügen.
+
+ <@sx_stylesheets_insert
+m_masken=masken
+m_stylesheet=stylesheet
+m_stylesheet_field=stylesheet_field
+/>
+
+
+<#macro sx_stylesheets_insert m_masken m_stylesheet m_stylesheet_field>
+
+--Sicherstellen, dass keine Duplikate vorkommen:
+--####################################################################################################
+<#foreach column in m_masken>
+delete from sx_mask_style where maskeninfo_id=${column.mask} and stylesheet_id in (select tid from sx_stylesheets where filename ='${column.filename}') and ord=${column.ord};
+#foreach>
+
+<#foreach column in m_stylesheet_field>
+delete from stylesheet_field where stylesheet_id in (select tid from sx_stylesheets where filename ='${column.filename}');
+#foreach>
+
+
+
+
+-- Stylesheets füllen
+--####################################################################################################
+create temp table tmp_stylesheets (
+tid serial not null,
+filename CHAR(255) ,
+caption CHAR(255) ,
+description CHAR(255) ,
+relation CHAR(10) ,
+useragent CHAR(255) ,
+contenttype CHAR(200) ,
+is_generic smallint,
+toolbar_icon_filepath VARCHAR(255) ,
+usage_resultset_data CHAR(10) default 'T' ,
+stylesheet_type CHAR(10) default 'XSL' ,
+jr_datasource CHAR(10)
+
+);
+
+create temp table tmp_hilf (tid integer);
+insert into tmp_hilf select max(tid) from sx_stylesheets;
+update tmp_hilf set tid=1 where tid is null;
+
+<#assign counter_tid = 1 />
+<#foreach column in m_stylesheet>
+insert into tmp_stylesheets (tid,
+filename,
+caption,
+description,
+relation,
+contenttype,
+is_generic,
+toolbar_icon_filepath ,
+usage_resultset_data ,
+stylesheet_type ,
+jr_datasource)
+select max(tid)+${counter_tid},'${column.filename}',
+'${column.caption}',
+ '${column.description}',
+ '${column.relation}',
+'${column.contenttype}',
+${column.is_generic},
+'${column.toolbar_icon_filepath}' ,
+'${column.usage_resultset_data}' ,
+'${column.stylesheet_type}' ,
+'${column.jr_datasource}'
+from tmp_hilf;
+<#assign counter_tid = counter_tid + 1 />
+#foreach>
+
+<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','is_generic')>
+update sx_stylesheets set is_generic=1
+where filename in (select T.filename from tmp_stylesheets T where T.is_generic=1);
+#if>
+
+
+--delete für tml_stylesheets hinzugefügt #ak 06.03.2013
+delete from tmp_stylesheets where filename in (select filename from sx_stylesheets);
+
+
+insert into sx_stylesheets (tid,
+filename, caption, description, relation, useragent, contenttype
+<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','is_generic')>
+,is_generic
+#if>
+<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','toolbar_icon_filepath')>
+,toolbar_icon_filepath ,
+usage_resultset_data ,
+stylesheet_type ,
+jr_datasource
+#if>
+)
+SELECT tid, filename, caption, description, relation, useragent, contenttype
+<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','is_generic')>
+,is_generic
+#if>
+<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','toolbar_icon_filepath')>
+,toolbar_icon_filepath ,
+usage_resultset_data ,
+stylesheet_type ,
+jr_datasource
+#if>
+FROM tmp_stylesheets;
+
+drop table tmp_stylesheets;
+
+
+-- Mask Style füllen
+--####################################################################################################
+create temp table tmp_mask_style (
+tid serial not null,
+maskeninfo_id INTEGER ,
+stylesheet_id INTEGER ,
+ord SMALLINT,
+filename char(255)
+);
+
+delete from tmp_hilf;
+insert into tmp_hilf select max(tid) from sx_mask_style;
+update tmp_hilf set tid=1 where tid is null;
+
+<#assign counter_tid = 1 />
+<#foreach column in m_masken>
+insert into tmp_mask_style (tid,maskeninfo_id,ord,filename)
+select max(tid)+${counter_tid},${column.mask},${column.ord},'${column.filename}' from tmp_hilf;
+
+update tmp_mask_style set stylesheet_id=(select max(tid) from sx_stylesheets where filename='${column.filename}')
+where filename='${column.filename}';
+<#assign counter_tid = counter_tid + 1 />
+#foreach>
+
+insert into sx_mask_style ( tid, maskeninfo_id, stylesheet_id, ord)
+SELECT tid, maskeninfo_id, stylesheet_id, ord
+FROM tmp_mask_style;
+
+drop table tmp_mask_style;
+
+
+--Field zu Stylesheet Zuordnungen:
+--####################################################################################################
+CREATE temp TABLE tmp_stylesheet_field
+(
+tid serial NOT NULL,
+stylesheet_id INTEGER,
+tablename char(255),
+fieldname char(255),
+filename char(255)
+);
+
+delete from tmp_hilf;
+insert into tmp_hilf select max(tid) from stylesheet_field;
+update tmp_hilf set tid=1 where tid is null;
+
+<#assign counter_tid = 1 />
+<#foreach column in m_stylesheet_field>
+INSERT INTO tmp_stylesheet_field (tid, filename, tablename, fieldname)
+select max(tid)+${counter_tid}, '${column.filename}', '${column.tablename}', '${column.fieldname}' from tmp_hilf;
+
+update tmp_stylesheet_field set stylesheet_id=(select max(tid) from sx_stylesheets where filename='${column.filename}')
+where filename='${column.filename}';
+<#assign counter_tid = counter_tid + 1 />
+#foreach>
+
+insert into stylesheet_field ( tid, stylesheet_id, tablename, fieldname)
+SELECT tid, stylesheet_id, tablename, fieldname
+FROM tmp_stylesheet_field;
+
+drop table tmp_stylesheet_field;
+drop table tmp_hilf;
+
+update sx_stylesheets
+set
+contenttype='txt/xml',
+is_generic=1,
+usage_resultset_data='T',
+stylesheet_type='XSL_JRXML'
+where filename in ('tabelle_jrxml_a4_quer.xsl');
+
+
+<#if SQLdialect='Postgres'>
+select sp_update_sequence('sx_stylesheets');
+select sp_update_sequence('sx_mask_style');
+select sp_update_sequence('stylesheet_field');
+#if>
+
+#macro>
diff --git a/superx/WEB-INF/.gitignore b/superx/WEB-INF/.gitignore
new file mode 100644
index 0000000..840e7d3
--- /dev/null
+++ b/superx/WEB-INF/.gitignore
@@ -0,0 +1 @@
+/classes/
diff --git a/superx/WEB-INF/conf/edustore/db/bin/SQL_ENV_sxc.sam b/superx/WEB-INF/conf/edustore/db/bin/SQL_ENV_sxc.sam
new file mode 100644
index 0000000..9f8276d
--- /dev/null
+++ b/superx/WEB-INF/conf/edustore/db/bin/SQL_ENV_sxc.sam
@@ -0,0 +1,14 @@
+#Beispielumgebung für das SXC-Modul:
+
+#SUPERX_MODULE=$SUPERX_DIR/db/module
+#SUPERX_ROHDATEN=rohdaten
+
+SXC_PFAD=$SUPERX_MODULE/sxc; export SXC_PFAD
+SXC_ERRORDAT=$SXC_PFAD/sxc_update.err; export SXC_ERRORDAT
+#Hier stehen die Rohdaten (im Unterverzeichnis unl)
+SXC_LOAD_PFAD=$SXC_PFAD/$SUPERX_ROHDATEN; export SXC_LOAD_PFAD
+SXC_ERRORMAIL=$ERRORMAIL; export SXC_ERRORMAIL
+SXC_LOGMAIL=$LOGMAIL; export SXC_LOGMAIL
+
+
+