Zur Homepage www.HI-Tier.de HitPop Post-Process
Zurück Home Nach oben Weiter
Öffentlicher Bereich für Entwickler

 

Hinweise

bulletPOP ("Post-Processing") Befehlsfolgen sind Makro-Befehle mit der die Ausgaben des HitBatch-Clients aufbereitet werden können.
bulletSie dienen insbesondere zur Filterung und Umformatierung von CSV-Dateien.
bulletDas Programm wird nur noch als Bestandteil des HitBatch-Client ausgeliefert und installiert.
bulletDas selbstständige Java-Programm HitPop wird nicht weiter gepflegt
bulletWeitere Hinweise siehe analog HitBatch-Client.

Versionshistorie

Version

Verfügbare Funktionen & Neuigkeiten

01.02.2016 Neu: Parameter POP_LINE_NR zum Generieren von Zeilennummern
18.01.2016 Neu: Parameter POP_REG_ANT zum variabel Gruppieren von Bestandsregisterzeilen nach Alter, Geschlecht und Kalbung
11.01.2016 Neu: Parameter zum Formatieren von Dezimalzahlen POP_KOMMA und POP_PROZENT
28.12.2015 Neu: Parameter zum Hinzufügen von Spalten APP_COLS
20.11.2015 Neu: Parameter zum Rechnen ADD, SUB, MUL, DIV und zum Vergleich LT, LE, EQ, GE, GT
22.10.2015 Neu: Parameter REORDER ; bei allen Befehlen mit als Spaltenparameter <c> sind jetzt auch Spaltennamen möglich
29.09.2015 Neu: Parameter ADD_COL, ADD_VAL, SUB_COL, SUB_VAL, POP_PIN, FUNC_COM
14.04.2014 Erweiterungen im Parameter POP_CXDROP
27.12.2012 Erweiterungen im Parameter POP_CEXCL
04.07.2003 Erste Version zum Output Post Processing

Beschreibung

Allgemeine Hinweise zum HIT-POST-PROCESSING

Damit die Ausgabe in die OUT-Files flexibler angepasst werden kann, um z.B. den Output direkt in Excel-gerechtes CSV zu wandeln (Dezimalpunkt-Problematik) oder um Timestamps als Input in einem späteren Step nutzen zu können, werden Befehle zum "POST-PROCESSING" eingeführt.

Es kann eine beliebige Anzahl von Befehlen nacheinander angegeben werden. Ab Version 5 kann das vorangestellte POP_ weggelassen werden, d.h. ein POP_TSTAMP und TSTAMP führen die selbe Aktion durch.

Alle Befehle werden in der gegebener Folge abgearbeitet. Der jeweils nächste Befehl arbeitet auf die schon veränderten Inhalte und ggf. veränderten Strukturen (wenn z.B. eine Spalte ausgeschlossen wird, müssen die nachfolgenden Befehle das berücksichtigen).

Ziel ist es, bestimmte Zeilen oder ganze Spalten zu verwerfen oder die Zeilen oder einzelne Spalten gezielt zu verändern. Seit Ende 2015 darf man als große Vereinfachung die Spalten mit Namen statt Positions-Nummer angeben. Je nach Kontext müssen

Aufrufsyntax

Für das Testprogramm:

java -cp "HitBatch.jar;HitUpros.jar" HitBatch.HitPop HitPop.ini

In der Parameterdatei sowohl für das Testprogramm als auch für den HitBatch:

[SET-1]
...
POPFILE=dateiname.pop
OUTFILE=dateiname.out
...

Ablauf

  1. Holt die Namen von Input-, Output-, Log- und POP-Befehls-Datei aus der INI-Datei.
  2. Lies dann alle Zeile der Inputdatei und schreibt sie unter Ausführung der POP-Befehle in die Outputdatei.
  3. Als Input eignen sich Outputdateien aus dem HitBatch.
  4. Wenn sich eine Befehlsfolge als geeignet für die Nachbearbeitung einer HitBatch-Outputdatei erwiesen hat, kann die entsprechende POP-Datei auch direkt im HitBatch verwendet werden.

POP - Post-Processing Befehle

POP_CLEAR Befehlsstapel löschen, entferne alle POP-Befehle aus der Befehlsliste
POP_RDROP <val> Verwerfe Output-Row wenn irgendwo in der Zeile der Wert <val> vorkommt
POP_CDROP <c>;<val> Verwerfe Output-Row wenn Spalte <c> (1..n) den Wert <val> hat
POP_CXDROP <c>;<cmp>;<val> Verwerfe Output-Row wenn Spalte <c> (1..n) verglichen mittels Vergleichs-Operator <cmp> mit Wert <val> wahr ist. Operatoren sind: "=" / "EQ" / "!=" / "NE" /">" / "GT" / ">=" / "GE" / "<" / "LT" / "<=" / "LE"
POP_RCHNG <old>;<new> Change Old-String <old> to New-String <new> für die ganze Zeile, unabhängig von Spalten
POP_CCHNG <c>;<o>;<n> Change in Spalte <c> Old-String <o> to New-String <n>
POP_TSTAMP <c>;<patt> Formatiere wenn Timestamp in Spalte <c> gemäß Format <patt>, z.B. yyyy-MM-dd-hh.MM.ss.ffffff
POP_DATE <c>;<patt> Formatiere wenn Datum     in Spalte <c> gemäß Format <patt>, z.B. dd.MM.yyyy
POP_TIME <c>;<patt> Formatiere wenn Zeit      in Spalte <c> gemäß Format <patt>, z.B. hh:MM
POP_NUM  <c>;<patt> Formatiere wenn Numerisch in Spalte <c> gemäß Format <patt>, z.B. ##0,00
POP_UCASE <c> Formatiere String    in Spalte <c> uppercase
POP_LCASE <c> Formatiere String    in Spalte <c> lowercase
POP_LOM <c> Formatiere String    in Spalte <c> als Alpha-Ohrmarke
POP_BNR <c> Formatiere String in Spalte <c> als Alpha-Betriebsnummer
POP_CEXCL <c1>[;<c2>[;...]] Schließe die Spalte <c1> oder mehrere Spalten generell von der Ausgabe aus.
Mehrere Spalten können als Auflistung mit Semikolon, ggf. auch mit einem Minus als Bis-Zeichen angegeben werden, also z.B.  "POP_CEXCL 1;3;5" oder "POP_CEXCL 1;-;5;7;9;12;-;20"
POP_CONST <c>;<konst> Ersetze Inhalt in Spalte <c> durch Konstante <konst>
ADD_COL <c1>;<c2>;<c3> Addiere Wert aus Spalte <c2> mit Wert aus Spalce <c3> und setze ihn in Spalte <c1>;
es können Zahl mit Zahl, Datum mit Zahl oder Datum mit Datum verrechnet werden
ADD_VAL <c1>;<c2>;<val> Addiere Wert aus Spalte <c2> mit Konstante <val> und setze ihn in Spalte <c1>;
es können Zahl mit Zahl, Datum mit Zahl oder Datum mit Datum verrechnet werden
SUB_COL <c1>;<c2>;<c3> Subtrahiere Wert aus Spalte <c2> mit Wert aus Spalce <c3> und setze ihn in Spalte <c1>;
es können Zahl mit Zahl, Datum mit Zahl oder Datum mit Datum verrechnet werden
SUB_VAL <c1>;<c2>;<val> Subtrahiere Wert aus Spalte <c2> mit Konstante <val> und setze ihn in Spalte <c1>;
es können Zahl mit Zahl, Datum mit Zahl oder Datum mit Datum verrechnet werden
ADD <c1>;<c2>|<[v2]>;<c3>|<[v3]> Addiere zu Wert aus Spalte <c2> oder Konstante v2 (in eckiger Klammer) den Wert aus Spalte <c3> oder Konstante <v3> und setze ihn in Spalte <c1>;
es können Zahl mit Zahl, Datum mit Zahl oder Datum mit Datum verrechnet werden
SUB <c1>;<c2>|<[v2]>;<c3>|<[v3]> Subtrahiere von Wert aus Spalte <c2> oder Konstante v2 (in eckiger Klammer) den Wert aus Spalte <c3> oder Konstante <v3> und setze ihn in Spalte <c1>;
es können Zahl mit Zahl, Datum mit Zahl oder Datum mit Datum verrechnet werden
MULT <c1>;<c2>|<[v2]>;<c3>|<[v3]> Multipliziere Wert aus Spalte <c2> oder Konstante v2 (in eckiger Klammer) mit Wert aus Spalte <c3> oder Konstante <v3> und setze ihn in Spalte <c1>;
es können Zahl mit Zahl, Datum mit Zahl oder Datum mit Datum verrechnet werden
DIV <c1>;<c2>|<[v2]>;<c3>|<[v3]> Dividiere Wert aus Spalte <c2> oder Konstante v2 (in eckiger Klammer) durch Wert aus Spalte <c3> oder Konstante <v3> und setze ihn in Spalte <c1>;
es können Zahl mit Zahl, Datum mit Zahl oder Datum mit Datum verrechnet werden
PIN <c>;<k>;<l> Generiere PIN mit Komplexität <k> und Länge <l> und setze sie in Spalte <c>
FUNC_COM <c> Komprimiere Newline-Funktion durch Verschmelzen mit Führungszeile, erkenntlich an "*) s.u." in der durch <c> angegebenen Spalte (es werden so aus zwei Zeilen eine)
REORDER [<c>;...] Gibt die Spalten <c>;... in der gegebenen Reihenfolge aus. Werden Spalten nicht angegeben, werden sie ignoriert.
LT <c1>;<c2>|<[v2]>;<c3>|<[v3]>;<c4>|<[v4]>;<c5>|<[v5]> Prüfe, ob die Bedingung "kleiner als" (LT, "less than") erfüllt ist.
Vergleiche Wert aus Spalte <c2> oder Konstante [v2] (in eckiger Klammer) mit Wert aus Spalte <c3> oder Konstante [v3].
Wenn erfüllt, setze den Wert aus Spalte <c4> oder die Konstante [v4] in die Spalte <c1>;
andernfalls wenn damit FALSE also "falsch" nehme der Wert aus Spalte <c5> bzw. Konstante [v5].
Es können Zahl mit Zahl, Datum mit Datum oder String mit String verrechnet werden
LE <c1>;<c2>|<[v2]>;<c3>|<[v3]>;<c4>|<[v4]>;<c5>|<[v5]> Prüfe analog LT, ob die Bedingung "kleiner gleich" (LE, "less equal") ist
EQ <c1>;<c2>|<[v2]>;<c3>|<[v3]>;<c4>|<[v4]>;<c5>|<[v5]> Prüfe analog LT, ob die Bedingung "gleich" (EQ, "equal") ist
GE <c1>;<c2>|<[v2]>;<c3>|<[v3]>;<c4>|<[v4]>;<c5>|<[v5]> Prüfe analog LT, ob die Bedingung "größer gleich" (GE, "greater equal") ist
GT  <c1>;<c2>|<[v2]>;<c3>|<[v3]>;<c4>|<[v4]>;<c5>|<[v5]> Prüfe analog LT, ob die Bedingung "größer als" (GT, "greater than") ist
APP_COLS <c>[;<c2>;...] Hängt die Spaltennamen <c>;... in der gegebenen Reihenfolge an. Bereits existierende Spaltennamen sind nicht zulässig.
POP_KOMMA <c>[;<NK>;...] Formatiert Zahl in Spalte <c> in deutschem Standardformat mit Tausenderpunkten und Dezimal-Komma und optional gewünschter NK-Zahl
POP_PROZENT <c>[;<NK>;...] Formatiert Zahl in Spalte <c> als Prozent ( /100 %) mit Tausenderpunkten und Dezimal-Komma und optional gewünschter NK-Zahl
POP_REG_ANT .... Funktion ähnliche GVE im Register, zur Ermittlung der Anteile in Register-Zeile mit folgenden Parametern:
  1. Name oder Nummer der Ausgabe-Spalte
  2. Einheit T (Tag) / M (Monat) /J (Jahr) als Konstante: [T] oder [M] oder [J] oder Wert: T oder M oder J
  3. Intervall-Untergrenze als Konstante [0] ... [N] oder Wert 0 ... N
  4. Untergrenze E (einschließlich) / A (ausschließlich) als Konstante: [E] oder [A] oder Wert: E oder A
  5. Intervall-Obergrenze als Konstante [0] ... [N] oder Wert 0 ... N
  6. Obergrenze E (einschließlich) / A (ausschließlich) als Konstante: [E] oder [A] oder Wert: E oder A
  7. Datum "Register-Von" als Spaltenname oder Spaltennummer mit Datum Register-Beginn oder als Konstante i.d.F. [TT.MM.JJJJ], z.B: [01.01.2015]
  8. Datum "Register-Bis" als Spaltenname oder Spaltennummer mit Datum Register-Ende oder als Konstante i.d.F. [TT.MM.JJJJ], z.B: [31.12.2015]
  9. Datum "DAT_EIN" als Spaltenname oder Spaltennummer mit Datum des Tierzugangs oder als Konstante i.d.F. [TT.MM.JJJJ]
  10. Datum "DAT_AUS" als Spaltenname oder Spaltennummer mit Datum des Tierabgangs oder als Konstante i.d.F. [TT.MM.JJJJ]
  11. Datum "GEB_DATR" als Spaltenname oder Spaltennummer mit Datum der Geburt (ggf. als Konstante)
  12. Geschlecht-Soll M oder 1 (männlich) / W oder 2 (weiblich) / 0 der <leer> (nicht prüfen) als Konstante [M] ... [0] oder Wert M,1,W,2,0
  13. Geschlecht-Ist "GESCHL_R" als Spaltenname oder Spaltennummer mit Angabe zum Geschlecht (ggf. als Konstante)
  14. Kalbung-Soll N oder 0 (nein) / K oder J oder 1 (ja) / <leer> (nicht prüfen) als Konstante [N] ... [0] oder Wert N,0,K,1,
  15. Datum "EKALBDAT" als Spaltenname oder Spaltennummer mit Datum der ersten Kalbung (ggf. als Konstante)

Beispiel siehe unten

POP_LINE_NR <c>;<[x]> Generiere Zeilennummer 1..n ggf. mit Offset <x> und setze sie in Spalte <c>

Beispiele

; Werfe alle Zeilen weg die den String "Exception" enthalten
POP_RDROP Exception

; Ersetze in der ganzen Zeile das Vorkommen von "%--" (als NULL-Indikator) durch den Leerstring ""  
POP_RCHNG %--;

; Erstze in Spalte 1 den Dezimalpunkt "." durch eine Komma ","
POP_CCHNG 1;.;,

; Verwerfe Zeile wenn 2. Spalte größer gleich 100.000 ist
POP_CXDROP 2;>=;100000

; Formatieren in Spalte 2 vorkommende Timestamps wie es Excel auch als Date-Time-Value akzeptiert
; Mikrosekunden werden dabei ignoriert, könnten mit ".SSSSSS" aber einbezogen werden.
POP_TSTAMP 2;dd.MM.yyyy hh.MM.ss

; Formatieren in Spalte 3 vorkommende Datumswerte wie es Excel auch als Date-Value akzeptiert
POP_DATE 3;dd.MM.yyyy

; Formatieren in Spalte 4 vorkommende Zeitwerte wie es Excel auch als Time-Value akzeptiert
POP_TIME 4;hh.MM.ss

; Formatieren in Spalte 5 vorkommende Zahlenwerte wie es Excel auch als Number-Value akzeptiert, mit
; zwei Nachkommastellen (gerundet)
; Der Punkt deutet nur die Stelle des Dezimaltrenners an, dieser ist je nach LOCALE-Einstellung
; unterschiedlich, in Deutsch ein Komma.
POP_NUM 5;##0.00

; Formatieren in Spalte 6 vorkommende Strings als Uppercase
POP_UCASE 6

; Formatieren in Spalte 7 vorkommende Strings als Lowercase
POP_LCASE 7

; Es können auch mehrer Befehle auf eine Spalte angewendet werden
POP_CCHNG 8;ä;Ä
POP_CCHNG 8;Ä;AE
POP_CCHNG 8;ü;Ü
POP_CCHNG 8;Ü;UE
POP_CCHNG 8;ö;Ö
POP_CCHNG 8;Ö;OE
POP_CCHNG 8;ß;SS
POP_UCASE 8

; Formatiere ...
POP_KOMMA GVE_KUH;[3]
POP_KOMMA BNR15;0

POP_PROZENT ANT_TOD;[2]

; Spalten anhängen, Register-Anteile berechnen und formatieren
APP_COLS W0;W1;W2;W3;W4_8;W8_20;W20_X

REG_ANT W0;T; 0;E; 7;A;DAT_VON;DAT_BIS;DAT_EIN;DAT_AUS;GEB_DATR
REG_ANT W1;T; 7;E;14;A;DAT_VON;DAT_BIS;DAT_EIN;DAT_AUS;GEB_DATR
REG_ANT W2;T;14;E;21;A;DAT_VON;DAT_BIS;DAT_EIN;DAT_AUS;GEB_DATR
REG_ANT W3;T;21;E;28;A;DAT_VON;DAT_BIS;DAT_EIN;DAT_AUS;GEB_DATR
REG_ANT W4_8;T;28;E;56;A;DAT_VON;DAT_BIS;DAT_EIN;DAT_AUS;GEB_DATR
REG_ANT W8_20;T;56;E;140;A;DAT_VON;DAT_BIS;DAT_EIN;DAT_AUS;GEB_DATR
REG_ANT W20_X;T;140;E;9999999;E;DAT_VON;DAT_BIS;DAT_EIN;DAT_AUS;GEB_DATR

POP_PROZENT W0;3
POP_PROZENT W1;3
POP_PROZENT W2;3
POP_PROZENT W3;3
POP_PROZENT W4_8;3
POP_PROZENT W8_20;3
POP_PROZENT W20_X;3

Spezielle Hinweise zu Formatierungspattern

Date/Time Format Syntax

To specify the time format use a time pattern string. In this pattern, all ASCII letters are reserved as pattern letters, 
which are defined as the following:

Symbol   Meaning                 Presentation        Example
 ------   -------                 ------------        -------
 G        era designator          (Text)              AD
 y        year                    (Number)            1996
 M        month in year           (Text & Number)     July & 07
 d        day in month            (Number)            10
 h        hour in am/pm (1~12)    (Number)            12
 H        hour in day (0~23)      (Number)            0
 m        minute in hour          (Number)            30
 s        second in minute        (Number)            55
 S        millisecond             (Number)            978
 E        day in week             (Text)              Tuesday
 D        day in year             (Number)            189
 F        day of week in month    (Number)            2 (2nd Wed in July)
 w        week in year            (Number)            27
 W        week in month           (Number)            2
 a        am/pm marker            (Text)              PM
 k        hour in day (1~24)      (Number)            24
 K        hour in am/pm (0~11)    (Number)            0
 z        time zone               (Text)              Pacific Standard Time
 '        escape for text
 ''        single quote                              '
 
The count of pattern letters determine the format. 
(Text): 4 or more pattern letters--use full form,
        < 4--use short or abbreviated form if one exists. 
(Number): the minimum number of digits. 
          Shorter numbers are zero-padded to this amount. 
          Year is handled specially; that is, if the count of 'y' is 2,
          the Year will be truncated to 2 digits. 
(Text & Number): 3 or over, use text, otherwise use number. 
Any characters in the pattern that are not in the ranges of ['a'..'z']
and ['A'..'Z'] will be treated as quoted text. 
For instance, characters like ':', '.', ' ', '#' and '@' will appear in the
resulting time text even they are not embraced within single quotes. 

A pattern containing any invalid pattern letter will result in a thrown
exception during formatting or parsing. 

Examples: 

 Format Pattern                         Result US Locale                        German locale
 --------------                         ----------------                        --------------
 "yyyy.MM.dd G 'at' hh:mm:ss z"    ->>  1996.07.10 AD at 15:08:56 PDT           1958.12.31 n. Chr. at 01:02:03 GMT+01:00
 "EEE, MMM d, ''yy"                ->>  Wed, July 10, '96                       Mi, Dez 31, '58
 "h:mm a"                          ->>  12:08 PM                                1:02 AM
 "hh 'o''clock' a, zzzz"           ->>  12 o'clock PM, Pacific Daylight Time    01 o'clock AM, GMT+01:00
 "K:mm a, z"                       ->>  0:00 PM, PST
 "yyyyy.MMMMM.dd GGG hh:mm aaa"    ->>  1996.July.10 AD 12:08 PM

Number Format Syntax

Symbol  Meaning
 0      a digit
 #      a digit, zero shows as absent
 .      placeholder for decimal separator
 ,      placeholder for grouping separator.
 ;      separates formats.
 -      default negative prefix.
 %      divide by 100 and show as percentage
 X      any other characters can be used in the prefix or suffix
 '      used to quote special characters in a prefix or suffix.

Examples:

 Format Pattern		Result
 ###,###.000		->> 1.234,450  

Zurück zum Anfang


© 1999-2015 Bay.StMELF, verantwortlich für die Durchführung sind die Stellen der Länder , fachliche Leitung ZDB: Frau Dr. Kaja.Kokott@hi-tier.de, Technik: Helmut.Hartmann@hi-tier.de
Seite zuletzt bearbeitet: 01. Februar 2016 18:49, Anbieterinformation siehe hier im Impressum.