Weniger Kosten, mehr Workflow
Weniger Kosten, mehr Workflow
Weniger Kosten, mehr Workflow
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