Dokumentation siehe http://www-dev.hi-tier.bybn.de/Entwicklung/Programme/hitpop.html

Source: ..\HitUpros\HitPop.java



Allgemeine Hinweise zum HIT-POST-PROCESSING
-------------------------------------------


  -- Bitte unten angegebene Einschrnkungen und Warnungen beachten --


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 spteren Step nutzen zu knnen, werden Befehle zum "POST-PROCESSING" eingefhrt.

Es kann eine beliebige Anzahl von Befehlen nacheinander angegeben werden. Die Befehle knnen auf 6 Stellen gekrzt werden.
Alle Befehle werden in der gegebener Folge abgearbeitet. Der jeweils nchste Befehl arbeit auf die schon vernderten Inhalte
und ggf. vernderten Strukturen (wenn z.B. eine Spalte ausgeschlossen wird, mssen die nachfolgenden Befehle das bercksichtigen).

Ziel ist es bestimmte Zeilen oder ganze Spalten zu verwerfen oder die Zeilen oder einzelne Spalten gezielt zu verndern.

Die POP-Befehle mssen immer nach dem setzen des Outfiles angegeben werden.
Ein ndern des OUT-Files mit Befehlen wie z.B. OUTNEW lscht die Liste automatisch.

POP_CLEAR               Befehlsstapel lschen, entferne alle POP-Befehle aus der Befehlsliste (nur im HitTest relevant)
POP_RDROP <val>         Verwerfe Output-Row wenn irgendwo in der Zeile der Wert <val> vorkommt
POP_CDROP <colnr>;<val> Verwerfe Output-Row wenn Spalte <colnr> (1..n) den Wert <val> hat
POP_RCHNG <old>;<new>   Change Old-String <old> to New-String <new> fr die ganze Zeile, unabhngig 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, z.B. yyyy-MM-dd-HH.mm.ss.SSSSSS
POP_DATE <c>;<patt>     Formatiere wenn Datum     in Spalte <c> gem Format, z.B. dd.MM.yyyy
POP_TIME <c>;<patt>     Formatiere wenn Zeit      in Spalte <c> gem Format, z.B. hh:MM
POP_NUM  <c>;<patt>     Formatiere wenn Numerisch in Spalte <c> gem Format, 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_CONST <c>;<konst>   Ersetze Inhalt in Spalte <c> durch Konstante <konst>
POP_SUBSTR <c>;<s>;<l>  Ersetze Inhalt in Spalte <c> durch Substring von <start> mit <lnge>, s=1..n
POP_LEFT   <c>;<l>      Ersetze Inhalt in Spalte <c> durch Left mit <lnge>
POP_RIGHT  <c>;<l>      Ersetze Inhalt in Spalte <c> durch Right mit <lnge>
POP_HK     <c>;<z>;<w>  Ersetze Inhalt in Spalte <c> durch Setze in Hochkomma mit <zeichen>,
                        mit <where> wird gesteuert wo: 0=beide Seiten, 1=links, 2=rechts
POP_DLC    <c>;<l>      Drop left chars, ersetzte Spalte indem links <lnge> weggeworfen wird
POP_DRC    <c>;<l>      Drop right chars, ersetzte Spalte indem rechts <lnge> weggeworfen wird
POP_CEXCL <c>           Schliee die Spalte <colnr> generell von der Ausgabe aus
                        (hilfreich bei #-Funktionen, hnliche Effekte wie FUNCONLY erzielbar - hat aber noch Probleme, siehe unten)
POP_DEFAULT <c>;<z>       Ersetze Inhalt in Spalte <c> wenn leer durch Default <zeichen>
POP_CIF    <c>;<k>;<if>   Ersetze Inhalt in Spalte <c> durch Konstante <konst> wenn Inhalt <if> ist
POP_CNIF   <c>;<k>;<nif>  Ersetze Inhalt in Spalte <c> durch Konstante <konst> wenn Inhalt nicht <nif> ist

Kommentare werden am Zeilenbeginn mit ; eingeleitet.



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;.;,

; Formatieren in Spalte 2 vorkommende Timestamps wie es Excel auch als Date-Time-Value akzeptiert
; Mikrosekunden werden dabei ignoriert, knnten 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 2 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 knnen 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


Stand-Alone Version zu Test- und Demozwecken
--------------------------------------------
Aufruf: java HitBatch.HitPopMain HitPop.ini
Zweck:  Holt die Namen von Input-, Output-, Log- und POP-Befehls-Datei aus der INI-Datei.
        Lies dann alle Zeile der Inputdatei und schreibt sie unter Ausfhrung der POP-Befehle in die Outputdatei.
        Als Input eignen sich Outputdateien aus dem HitBatch.

        Wenn sich eine Befehlsfolge als geeignet fr die Nachbearbeitung einer HitBatch-Outputdatei erwiesen hat,
        kann die entsprechende POP-Datei auch direkt im HitBatch verwendet werden.


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.



Einschrnkungen und Warnungen
-----------------------------

Es gibt noch Probleme

- wenn sich die Spalten im Laufe der Verarbeitung ndert, z.B. unterschiedliche Funktionen oder
  eventuell auch Fhrungsentitt ws. Funktionsspalten
- durch Anhngen an ein bestehende Datei wenn die bisherigen Spalten nicht mit den neuen bereinstimmen
- nicht mit "OUTFNEW" sondern "OUTFAPP" (siehe oben)
- wenn POP-Befehle nach statt vor ffnen der Datei angegeben sind

Als Lsung kann man eine Datei mit den endgltig gewnschten Spalten anlegen und mittels "NETAPP" daran anhngen.
Damit werden die gewnschten Spalten an den Anfag gesetzt und die anderen ans Ende.
Mit "COL-Drop" kann ich zum Schluss die nicht bentigten Spalten hinten wieder weg werfen.
