Hilfsprogramm p2fDate

Anforderung

Hin und wieder kommt es vor, dass in einem Dokument ein Datum oder eine Uhrzeit gedruckt werden muss, die im eigentlichen Druckdatenstrom nicht enthalten ist, wohl aber auf einer Zeitangabe im Druckdatenstrom basiert. Ein typischer Anwendungsfall ist das Avis eines Lastschrifteinzugs auf einer Rechnung, das seit der Einführung von SEPA mit dem konkreten Einzugsdatum versehen werden muss.

Kann oder soll das Programm zur Erzeugung der Rechnungen nicht entsprechend abgeändert werden, muss print2forms das Datum des Einzugs berechnen.

Realisierung

Für Fälle, in denen das normale Leistungsspektrum von print2forms nicht ausreicht, gibt es bei der Definition von Formularen ein System-Anfragefeld. Mit Hilfe diese Feldes kann während der Erzeugung eines Formulars ein beliebiges externes Programm aufgerufen werden, das dann die verlangte Aufgabe übernimmt. Dabei können auch Parameter an das Programm übergeben werden, die die zu lösende Anforderung definieren.

Für die Anforderungen der Datumsberechnung wurde das Programm p2fDate geschrieben. Das Programm wurde als sogenannte Systemfeldapplikation geschrieben, die nur innerhalb eines print2forms-Formulars in einen System-Anfragefeld verwendet werden kann.

Die Leistungsmerkmale des Programms sind:

Ein Aufruf der Systemfeldapplikation ohne Parameter über die Kommandozeile (DOS-Box, Eingabeaufforderung, Konsole) zeigt eine kurze Beschreibung, die möglichen Parameter und ein paar beispielhafte Aufrufe an. Auch die Rückkehrwerte des Programms sind aufgelistet:

  p2fDate V1.0  (c) 2013 by SPE Systemhaus GmbH
  
  Description:
   Adds or subtracts an amount of time from the
   actual date and returns the resulting date in
   format 'DD.MM.YYYY' or 'DD.MM.YYYY HH:MM:SS'.
  
  Program parameters are:
   Optional parameters:
   -iDD.MM.YYYY Set base date to given date
   -iYYYY/DD/MM Set base date to given date
   -iMM/DD/YYYY Set base date to given date
   -iHH:MM:SS   Set base time to given time
   -a<offset>   Time to add in seconds
   -s<offset>   Time to subtract in seconds
   -d           Return date
   -t           Return time
   -y           Return day of year
   -n           Return name of day 1 = Monday
   -u           Return US format 'MM/DD/YYYY'
  
  General return codes:
      0 - Success
     -1 - Failed
     -2 - Unknown program option
     -3 - Program option expected
     -4 - Time to add must be positive
     -5 - Time to subtract must be positive
     -6 - Add and subtract must be used exclusively
     -7 - Unknown input format
      n - Windows error code
  
  Usage in system request field:
   p2fDate -a432000
      Today plus five days as 'DD.MM.YYYY'
   p2fDate -d -s86400
      Yesterday as 'DD.MM.YYYY'
   p2fDate -a3600 -d -t
      In one hour as 'DD.MM.YYYY HH:MM:SS'
   p2fDate -n
      Name of today as 'N'
   p2fDate -d -y -u
      Name of today as 'MM/DD/YYYY DDD'
  
  print2forms (R)  is a registered trademark
                   of SPE Systemhaus GmbH



Aufruf im System-Anfragefeld

Für eine Datumsberechnung (hier als Beispiel ein SEPA Lastschriftavis) muss innerhalb eines Formulars zum einen ein System-Anfragefeld zur Berechnung des Datums und ein Textfeld zur Ausgabe des Datums eingefügt werden.

Im System-Anfragefeld wird mit der Feldauswahl das Datum im Format 'DD.MM.YYYY' aus der Rechnung entnommen, und dem Programm mit dem Parameter '-i\Datum Deutsch:1' als Bezugswert übergeben. Sicherheitshalber (es könnte ganz kurz vor Mitternacht sein) wird die Zeit fest auf Mittag gestellt. Der Parameter '-d' wählt als Rückgabewert ein Datum, welches durch Addition von 604800 Sekunden (7 Tage) auf das Bezugsdatum entsteht.

Die Angabe Ausführung abwarten im System-Anfragefeld sorgt dafür, dass mit dem Druck des Formulars gewartet wird, bis die Systemfeldapplikation beendet wurde und die angefragten Daten wirklich zur Verfügung stehen. Die Angabe des Zeichensatzes ist in diesem Fall unkritisch, weil die Kommandos für p2fDate nur ASCII-Zeichen enthalten.

Im Textfeld schliesslich wird das durch p2fDate errechnete Datum mittels der Referenz '~Datum Deutsch:1' in den Text des Avis aufgenommen.

Beispiele

Hier einige weitere Berechnungsbeispiele:

p2fDate -d Datum des Drucks im europäischen Format 'DD.MM.YYYY'
p2fDate -d -u Datum des Drucks im amerikanischen Format 'MM/DD/YYYY'
p2fDate -d -s86400 Datum von Gestern
p2fDate -d -a86400 Datum von Morgen
p2fDate -a3600 -d -t Datum und Uhrzeit in einer Stunde im Format 'DD.MM.YY HH:MM:SS'
p2fDate -a432000 Datum des Drucks plus fünf Tage im Format 'DD.MM.YYYY'
p2fDate -d -t Datum des Drucks im Format 'DD.MM.YYYY HH:MM:SS'
p2fDate -i27.02.2013 -a604800 -d '06.03.2013'


Hinweise