21.08.2012 Aufrufe

Weniger Kosten, mehr Workflow

Weniger Kosten, mehr Workflow

Weniger Kosten, mehr Workflow

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Zum Testprogramm<br />

‚TestVerteilung‘ (Bild 3)<br />

In der Programmvariablen intWerte<br />

wird das Array durch die fünf Initialwerte<br />

implizit mit fünf Elementen angelegt.<br />

Das float-Array ist notwendig, denn<br />

von der Parameterliste der aufzurufenden<br />

Funktionen wird der Typ float[]<br />

erwartet. Der Typ int[] ist nicht zuweisungskompatibel<br />

zu float[], obwohl int<br />

zuweisungskompatibel zu float ist. Also<br />

muss man die Werte einzeln zuweisen,<br />

was man sinnvollerweise in einer for-<br />

Schleife (Zeilen 9 bis 11) erledigt.<br />

In den Zeilen 12 und 13 passiert<br />

Folgendes: Die Funktion writeStdout()<br />

verlangt einen Zeichenkettentyp. Diesen<br />

bekommt man, indem der erste<br />

Operand ein String-Literal ist, das einen<br />

String-Kontext eröffnet und so mit<br />

dem überladenen String-Operator „+“<br />

die Verkettung auswählt, und nicht<br />

ein Additions- „+“. Der damit festliegende<br />

Ausdruckstyp string führt dazu,<br />

dass weitere Operanden wie das float-<br />

Ergebnis des Aufrufs der Funktion mittelWert()<br />

durch implizite Anwendung<br />

der Library-Funktionen StrLib.format­<br />

Number() in einen String konvertiert<br />

werden. Dies ist auch noch ein Beispiel<br />

für einen geschachtelten Funktionsaufruf<br />

innerhalb eines Ausdrucks, wobei<br />

dieser Ausdruck effektiv drei Schachtelungsebenen<br />

hat.<br />

Die Ausgabe in den Zeilen 14 und<br />

15 unterscheidet sich von der vorigen<br />

nur durch den „stärkeren“ Verkettungsoperator<br />

„::“, der genauso funktioniert<br />

hätte, wenn der erste Operand kein<br />

String gewesen wäre.<br />

Zur Library ‚Fristen‘ (Bild 4)<br />

Der Input-Parameter gruppe ist später<br />

einmal dafür vorgesehen, ein Kriterium<br />

zu beinhalten, nach dem die Gruppe<br />

von Aufträgen aus dem ERP-System<br />

mit den statistisch auszuwertenden<br />

Zahlungsdaten ausgewählt werden<br />

soll.<br />

Die lokalen Variablen zahlungsZiele<br />

und zahlungen simulieren die Datumsdaten<br />

von der zu betrachtenden Gruppe<br />

von Aufträgen.<br />

Das Zeitintervall wird für eine vierstellige<br />

Anzahl von Tagen angelegt (Zeile<br />

10). Bei einer zweistelligen Anzahl<br />

wären 100 Tage „lautlos“ zu 0 Tagen<br />

geschrumpft.<br />

Die Variablen zahlungsZiel und zahlungen<br />

vom Typ timeStamp in den Zeilen<br />

11 und 12 werden zum Konvertieren in<br />

den Zeilen 17 und 18 benötigt und ha-<br />

ANZEIGE<br />

Den Zustand Ihres Körpers<br />

sehen Sie auf einen Blick.<br />

Den Ihres Unternehmens<br />

auch.<br />

Gönnen Sie sich eine völlig neue Sicht<br />

auf den aktuellen Zustand Ihres Unternehmens.<br />

QlikView liefert per Mausklick<br />

sowohl aggregierte Kennzahlen<br />

und Performance-Indikatoren als auch<br />

Detailinformationen aus einzelnen Datensätzen<br />

- für alle Bereiche und aus<br />

allen Datenquellen.<br />

Mit einem „Qlik“ zur Zustandsanzeige<br />

für Ihr Unternehmen:<br />

www.wmr.at<br />

In Kooperation mit dem<br />

Partner-Unternehmen<br />

„WMR - WIR MACHEN‘S RICHTIG.“<br />

ben eine interne Maske entsprechend<br />

der dezimalen Zahlendarstellung des<br />

Datums im ERP-System.<br />

Der „Zwischentyp“ int[] für tageArray<br />

(Zeile 14) wird deswegen benötigt,<br />

weil eine Typmigration von interval<br />

nach float, worin die Statistik-Berechnungen<br />

durchgeführt werden, direkt,<br />

so wie in Zeile 20, nicht möglich ist.<br />

Dort wird die interval-Variable Tage im<br />

Argument von appendElement() in ein<br />

int migriert, d. h. konvertiert.<br />

Das Statistik-Auswertungsprogramm<br />

‚ZahlungsAuswertung‘<br />

(Bild 5)<br />

Dieses Programm unterscheidet sich<br />

vom Test-Programm TestVerteilung dadurch,<br />

dass der Input für die Statistik-<br />

Auswertung durch die Funktion Fristen.zahlungsDauer()<br />

geliefert wird und<br />

die Elementeanzahl des Arrays erst zur<br />

Ausführungszeit bekannt ist. Deshalb<br />

wird bei der Erzeugung des als Argument<br />

an die Statistik-Funktionen zu<br />

übergebenden Arrays dieses in Zeile 10<br />

dynamisch (mit 0 Elementen) angelegt<br />

und mit so vielen Elementen erweitert,<br />

wie durch die Funktion zahlungs­<br />

Dauer() aktuell geliefert werden. Beim<br />

Erweitern des Arrays durch Elemente<br />

in Zeile 12 wird der int-Wert eines Elementes<br />

in einen float-Wert migriert.<br />

Vergleiche, Bedingungen<br />

und logische Ausdrücke<br />

Die Anweisungen des EGL-Kerns, die<br />

keine Zuweisungen haben, haben im<br />

Wesentlichen mit Ablaufsteuerung der<br />

Anwendung zu tun, sowohl im Groben<br />

beim Aufruf von Programmen oder<br />

Funktionen als auch innerhalb der Funktionen<br />

zur bedingten oder zyklischen<br />

Ausführung von Anweisungen. Letztere,<br />

z. B. if und while, enthalten Ausdrücke<br />

vom Typ boolean, genannt logische<br />

Ausdrücke, die meist aus Vergleichen<br />

und ggf. logischen Operatoren bestehen.<br />

Auch logische Ausdrücke können zu<br />

Variablen des Typs boolean zugewiesen<br />

werden, und auch hier stecken in komplexen<br />

Ausdrücken wieder Zuweisungen.<br />

Setzen wir also die Betrachtungen<br />

zu Variablen, Typen und Ausdrücken<br />

mit denen zur Ablaufsteuerung fort.<br />

Der elementare Bestandteil eines<br />

logischen Ausdrucks ist hauptsächlich<br />

der Vergleich, z. B. zahl >= 10 oder<br />

(upper(zuName) like „SCHMI%“) oder<br />

(0 in meinArray).<br />

07/2010 · MIDRANGE MAgAZIN<br />

39

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!