edifact/eancom DTM to number parsing(format a, value b, part c, [exception handling d, force empty e])

Prev Next

Liest die im Wert b eines EDIFACT- oder EANCOM-DTM-Segments kodierte Zahl aus und gibt sie als ganze Zahl zurück. Der DTM-Formatcode a (Datenelement 2379) legt fest, wie der Wert b interpretiert wird.

Beispiel: In DTM+2:30:804' ist der Wert 30 und der Formatcode 804 – also eine Menge von 30 Tagen.

Nur bestimmte Formatcodes liefern eine Zahl. Sie lassen sich in drei Gruppen einteilen:

  • 801–814 – reine Mengenangaben, z. B. eine Anzahl von Tagen.

  • 107–110 – die Nummer eines Tages, einer Woche oder eines Monats innerhalb eines Jahres bzw. Monats.

  • 6–9 – ein Kalenderdatum mit einer angehängten Zahl. Zurückgegeben wird nur diese Zahl; der Datumsteil lässt sich mit der Funktion edifact/eancom DTM to timestamp parsing ermitteln.

Für die Verarbeitung gelten folgende Regeln:

  • Das Ergebnis ist eine ganze Zahl. Führende Nullen werden ignoriert, ein Vorzeichen (+ oder -) ist zulässig.

  • Der Zahlenteil wird nicht gegen einen Wertebereich geprüft.

  • Führende und nachfolgende Leerzeichen im Formatcode a werden entfernt; die Groß-/Kleinschreibung spielt keine Rolle.

  • Der Wert b wird unverändert verwendet und darf keine Leerzeichen enthalten.

Parameter

Parameter

Beschreibung

a

DTM-Formatcode (Datenelement 2379), z. B. 804, 107, 8. Siehe Abschnitt Formatcodes.

b

Der zu verarbeitende Wert aus dem DTM-Segment.

c

(optional) Teil eines Zeitraums, der zurückgegeben wird. from, 1, true oder leer liefern den Anfang, until, 2 oder false das Ende. Ohne Wirkung, da kein Formatcode mit Zahl einen Zeitraum beschreibt. Default: from

d

(optional) Fehlerbehandlung, wenn b nicht mit dem Formatcode a verarbeitet werden kann.

  • error – Abbruch mit Fehlermeldung.

  • empty – Das Ergebnis ist ein leerer Wert (technisch ein leerer Zeitstempel mit gesetztem Empty Flag).

  • now – Das Ergebnis ist das aktuelle Datum mit Uhrzeit (ein Zeitstempel, keine Zahl).

Default: error

e

(optional) Erzwingt einen leeren Wert. Bei true gibt die Funktion sofort einen leeren Wert mit gesetztem Empty Flag zurück, ohne b zu verarbeiten – z. B. wenn das Quellfeld leer ist. Default: false

Formatcodes

Formatcodes, die ein Datum, eine Uhrzeit oder einen Zeitraum ohne Zahlenkomponente darstellen (z. B. 102, 203, 718), werden zurückgewiesen. Für diese Formatcodes ist die Funktion edifact/eancom DTM to timestamp parsing vorgesehen.

Die vollständige Definition aller Formatcodes finden Sie in der Codeliste des UN/CEFACT-Datenelements 2379: UN/CEFACT UNCL 2379.

Beispiele

Die Parameter c, d und e sind leer, sofern nicht anders angegeben.

Parameter a

Parameter b

Ergebnis

6

2015022 (Monatshälfte)

2 (zweite Hälfte des Februar 2015)

6

2015023 (Monatshälfte)

3, der Bereich wird nicht geprüft

7

2024031 (Woche des Monats)

1 (erste Woche des März 2024)

8

202403021 (Schicht des Tages)

1 (Schicht 1 am 2. März 2024)

9

2024030205 (Zeitabschnitt des Tages)

5 (Zeitabschnitt 05 am 2. März 2024)

107

366 (Nummer des Tages im Jahr)

366

108

53 (Nummer der Woche im Jahr)

53

110

31 (Nummer des Tages im Monat)

31

801

120215 (Anzahl der Jahre)

120215

801

007 (Anzahl der Jahre)

7

801

-12 (Anzahl der Jahre)

-12

804

30 (Anzahl der Tage)

30

813

7 (Wochentag, Montag = 1)

7

Fehlerbehandlung

Parameter a

Parameter b

Parameter d

Parameter e

Ergebnis

8

20240302 (Schicht des Tages)

Abbruch mit Fehler, die Schicht-Ziffer fehlt.

102

20240301

Abbruch mit Fehler unable to parse '20240301' with format code '102', da der Code ein Datum darstellt.

102

20240301

empty

Leerer Wert (leerer Zeitstempel mit gesetztem Empty Flag).

801

12A (Anzahl der Jahre)

Abbruch mit Fehler unable to parse '12A' with format code '801'.

801

(leer)

Abbruch mit Fehler unable to parse '' with format code '801' (leerer Wert).

801

2147483648 (Anzahl der Jahre)

Abbruch mit Fehler, der Wert überschreitet den Integer-Bereich.

801

ABC (Anzahl der Jahre)

now

Aktuelles Datum mit Uhrzeit.

801

true

Leerer Wert, b wird nicht verarbeitet.