int setcurfieldcont (maskfield para_1)
Setzt den Feldinhalt des Feldes para_1 der aktuellen Maske, von der aus das Formular gestartet wurde. Der Maskenname der aktuellen Maske und der Maskenname der Maskenvariablen para_1 müssen übereinstimmen, sonst wird kein Feldinhalt gesetzt. Wenn Feldinhalte im Rahmen eines Maskenformulars gesetzt werden sollen, muss diese Funktion verwendet werden. Die Funktion ist nur im Funktionsformularkompiler verfügbar.
0
... arti.BEZ1_ARTI_ARTI.m = "Neue Artikelbezeichnung"; setcurfieldcont (arti.BEZ1_ARTI_ARTI); ...
int setcurfielderror (maskfield para_1)
Setzt das Fehlerflag des Feldes para_1 der aktuellen Maske. Das Feld wird auf der Maske rot umrahmt, um den Fehler kenntlich zu machen.
0
if (arti.BEZ1_ARTI_ARTI.m == "") { setcurfielderror (arti.BEZ1_ARTI_ARTI); errno = 1234; ret = -2; }
int setcurfieldaccess (text field, int mode)
Setzt die Feldrechte.
0
... if (arti.BEZ1_ARTI_ARTI.m == "") { setcurfieldaccess ("BEZ1_ARTI_ARTI", 6); } ...
int getcurfieldcont (maskfield para_1)
Kopiert die Feldinhalte (m,s,o siehe Kapitel 4.3.1 Variablentypen) des Feldes para_1 der aktuellen Maske, von der aus das Formular gestartet wurde in die Variable para_1. Der Maskenname der aktuellen Maske und der Maskenname der Maskenvariablen para_1 müssen übereinstimmen sonst wird kein Feldinhalt kopiert. Version RC 1.0 Programmierhandbuch 50 von 80 Betriebswirtschaftliche Standardsoftware - Made for the WEB
0
... arti.BEZ1_ARTI_ARTI.m = "Neue Artikelbezeichnung"; setcurfieldcont (arti.BEZ1_ARTI_ARTI); arti.BEZ1_ARTI_ARTI.m = ""; getcurfieldcont (arti.BEZ1_ARTI_ARTI); /*arti.BEZ1_ARTI_ARTI.m := "Neue Artikelbezeichnung"*/ ...
int setcurmaskcont (mask para_1)
Setzt alle Feldinhalte der aktuellen Maske, von der aus das Formular gestartet wurde auf die Feldinhalte der Maskenvariablen para_1. Der Maskenname der aktuellen Maske und der Maskenname der Maskenvariablen para_1 müssen übereinstimmen sonst wird kein Feldinhalt übergeben. Die Funktion ist nur im Funktionsformularkompiler verfügbar.
0
... arti.ART_ARTI_ARTI.m = "ART-00001"; arti.BEZ1_ARTI_ARTI.m = "Neue Artikelbezeichnung"; setcurmaskcont (arti);
int getcurmaskcont (mask para_1)
Kopiert alle Feldinhalte der aktuellen Maske, von der aus das Formular gestartet wurde in die Felder der Maskenvariablen para_1. Der Maskenname der aktuellen Maske und der Maskenname der Maskenvariablen para_1 müssen übereinstimmen sonst wird kein Feldinhalt kopiert.
0
getcurmaskcont (arti);
int getmasktitle (text maskname)
Liefert die Titelnummer einer Maske zurück. Die Titelnummer ist eine eindeutige Identifizierung der Maske und wird benötigt, um einer Maske (Tabelle) datenbanktechnisch Notizen bzw. Zusatztexte zuzuordnen. Die Zuordnung zu einem bestimmten Datensatz erfolgt über die Titelnummer und eine laufende Datensatznummer.
Maskentitelnummer
tn = getasktitle ("ARTI");
text sepstrcpy (text para_1, text sep)
Zerlegt einen String „para_1“ mit dem Separator „sep“. Der 1. Aufruf erfolgt mit dem zu zerlegenden String. Die nächsten Aufrufe mit einem Leerstring.
Zeichenkette des zerlegten Strings para_1 oder 0 am Ende.
word = sepstrcpy (string, " "); while ( (ta_merk = sepstrcpy ("", " ")) != "") { if (strlen (word + " " + ta_merk) > 100) { break; } word = word + " " + ta_merk; } cellprops (A_LEFT, F_NORM, SLANT, C_FOR, C_BACK, C_LINE, L_WIDTH, 0, PREC); nextcell (cell_ypos, cell_xpos, print_width * 100, S_NORM, VSPACE); curcell = word;
int cellprops (int align, text font, int slant, int fgcolor, int bgcolor, int bcolor, int linewidth, int prop, int floatprec)
Setzt Zellenattribute für alle nachfolgenden Zellenzuweisungen. Es gibt in der Datei 'layout.ssh' bereits vorgefertigte Definements für alle Parameter.
0
int makecell (int y-pos, int x-pos, int cellwidth, int cellheight, int vertspace, int horspace)
Setzt Zellenattribute für alle nachfolgenden Zellenzuweisungen. Es gibt in der Datei 'layout.ssh' bereits vorgefertigte definements für alle Parameter.
0
... cellprops (A_LEFT, F_NORM, SLANT,C_FOR,C_BACK,C_LINE, L_WIDTH, 0, PREC); makecell (200, 200, 1000, 50, 10); /* oder als neuer funktionsaufruf * nextcell (cell_ypos, cell_xpos, print_width * 10, S_NORM, VSPACE); */ curcell = "Zeile_" + itoa (curline) + " Spalte_1"; ...
int newpage ()
Generiert einen Seitenvorschub.
0
... while (curpage < 5) { cellprops (A_LEFT, F_NORM, SLANT,C_FOR,C_BACK,C_LINE, L_WIDTH, 0, PREC); nextcell (cell_ypos, cell_xpos, print_width * 10, S_NORM, VSPACE); curcell = "Zeile_" + itoa (curline) + " Spalte_1"; **//** hier muss noch eine leere Zelle kommen, damit die letzte Zelle vor dem Seitenumbruch **//** noch auf der vorherigen Seite gedruckt wird !! nextcell (cell_ypos, cell_xpos, print_width * 1, S_NORM, VSPACE); curcell = “”; newpage (); }
text date2langdate (int date, text lkz, text format)
Wandelt einen internen Datumswert (Minuten seit 01.01.1800) 'date' in eine Zeichenkette nach angegebenem Format 'format' bzw. dem in Landeskennzeichen 'lkz' hinterlegtem Druckformat um. Wird 'format' als leere Zeichenkette übergeben, so wird die im Landeskennzeichen 'lkz' hinterlegte Druckformatangabe verwendet. Wird 'lkz' und 'format' als leere Zeichenkette übergeben, so wird das als Drucksprache angegebene Landeskennzeichen für 'lkz' verwendet.
Zeichenkette in Datumsformat
text datum; .... datum = date2langdate (rek.RDAT_REK_REK.m, "", "%d.%m.%Y"); /* datum im Format "dd.mm.yyyy" */ ....
int langdatetodate (text indate, text lkz, text format)
Ermittelt and Hand des Landeskennzeichens 'lkz' das zugehörige Datumsformat und wandelt 'indate' in ein internes Datumsformat (Minuten seit 01.01.1800) um. Ist 'lkz' nicht angegeben wird 'format' zur Analyse von 'indate' verwendet. Ist auch 'format' nicht angegeben wird die aktuelle Druckeinstellung verwendet.
Integerwert des Datums in Minuten seit 01.01.1800.
int datum; .... datum = langdate2date ("01.05.2000", "", "%d.%m.%Y"); /* datum im Format "dd.mm.yyyy" */ ....
text flangstring (int num, text lkz)
Gibt den sprachabhängigen Text mit der Nummer 'num' aus der Datei <IXESS_HOME>/etc/mxform zurück. Wird 'lkz' als leere Zeichenkette übergeben, so wird die aktuelle Maskensprache als Drucksprache verwendet.
Zeichenkette.
.... ltext = flangstring (12345, ""); ....
int dateadd (int date, int month, int year)
Addiert auf einen internen Datumswert 'date' Anzahl Monate 'month' plus Anzahl Jahre 'year' .
neuer interner Datumswert
.... newdate = dateadd (date, 2, 0); /* newdate = aktuelles Datum plus 2 Monate */ ....
float currency2intern (float value, text wkz, float faktor)
Wandelt einen angegebenen Währungswert 'value' mit einem angegebenen Währungskennzeichen 'wkz' oder einem angegebenen Faktor 'faktor' in die interne Währungsdarstellung um. Wird als Faktor 'faktor' 0.0 angegeben, so wird der im angegebenen Währungskennzeichen 'wkz' hinterlegte Umrechnungsfaktor zum Berechnen des internen Währungswertes verwendet. Ist als Währungskennzeichen 'wkz' eine leere Zeichenkette angegeben, so wird die aktuelle Maskenwährung als 'wkz' verwendet.
interner Währungswert oder 0 (Fehler)
.... curr_internal = currency2intern (2.5, "DEM", 0.0); /* curr_internal = interne Währungsdarstellung von 2,50 DM */ curr_internal = currency2intern (2.5, "USD", 0.0); /* curr_internal = interne Währungsdarstellung von 2,50 US-Dollar */ ....
float intern2currency (float internal, text wkz, float faktor)
Wandelt einen angegebenen Währungswert 'internal' in interner Währungsdarstellung mit einem angegebenen Währungskennzeichen 'wkz' oder einem angegebenen Faktor 'faktor' in die angegebene Währung um. Wird als Faktor 'faktor' 0.0 angegeben, so wird der im angegebenen Währungskennzeichen 'wkz' hinterlegte Umrechnungsfaktor zum berechnen des darzustellenden Währungswertes verwendet. Ist als Währungskennzeichen 'wkz' eine leere Zeichenkette angegeben, so wird die Währung aus der aktuellen Maskensprache als 'lkz' verwendet.
Landeswährungswert oder 0 (Fehler)
.... curr_country = intern2currency (2.5, "DEM", 0.0); /* curr_country = Landeswährungsdarstellung in DM von intern 2,50 */ curr_country = intern2currency (2.5, "USD", 0.0); /* curr_country = Landeswährungsdarstellung in US-Dollar von intern 2,50 */ ....
text printcurrency (float value, text lkz, int print)
Wandelt einen angegebenen Währungswert 'value' in mit einem angegebenen Währungskennzeichen 'wkz' in eine Zeichenkette um. Ist als Währungskennzeichen 'wkz' eine leere Zeichenkette angegeben, so wird die aktuelle Maskenwährung als 'wkz' verwendet. Mit der Option 'print' kann die erzeugte Ausgabe gesteuert werden.
Zeichenkette der Landeswährungsdarstellung oder leere Zeichenkette (Fehler)
.... curcell = printcurrency (2.0, "DEM", 0); /* curcell = "2,00 DM" */ curcell = printcurrency (2.0, "USD", 1); /* curcell = "2.00" */ curcell = curcell + printcurrency (0.0, "USD", 3); /* curcell = "USD" */ ....
int uxtime ()
Gibt die aktuelle UNIX-Zeit zurück (Sekunden seit 01.01.1970).
aktuelle UNIX-Zeit
.... timenow = uxtime (); ....
int uxtimes ()
Gibt die Millisekunden seit dem letzen Systemstart zurück.
Millisekunden seit dem letzen Systemstart
.... millis_since_boot = uxtimes (); ....
text itoa (int para_1)
Wandelt einen Ganzzahlwert para_1 in eine Zeichenkette um.
Zeichenkette mit numerischem Wert para_1;
.... curcell = "Positionsnummer: " + itoa (rep.POS_REP_REP.m); ....
int atoi (text para_1)
Wandelt eine numerische Zeichenkette in einen Ganzzahlwert um.
Ganzzahlwert.
.... textval = "12"; intvalue = atoi (textval); ....
text ftoa (float para_1, int precision, int flag)
Wandelt einen Floatwert para_1 in eine Zeichenkette um. 'precision' ist Anzahl der Nachkommastellen. 'flag' 0 nur mit Dezimaltrenner, 1 mit Spracheinstellung.
Zeichenkette mit numerischem Wert para_1;
.... curcell = "Lagerbestand: " + ftoa (ap.RBST_AP_AP.m, 2, 1); ....
float atof (text para_1)
Wandelt eine numerische Zeichenkette in einen Floatwert um.
Floatwert.
.... textval = "1.2"; floatval = atof (textval); ....
float round (float value, int prec, int direc)
Rundet einen Floatwert 'value' auf 'prec' Nachkommastellen in Richtung 'direc'.
gerundete Fließkommazahl.
.... curcell = "Bestand : " + ftoa (round (ap.RBST_AP_AP.m, 2, 1), 2, 0); ....
float mround (float value, int prec)
Rundet eine Fließkommazahl 'value' auf 'prec' Nachkommastellen unter Berücksichtung von Rundungsfehlern vorheriger mround-Aufrufe. Zurücksetzen erfolgt durch 'value' = 0 und 'prec' = 0. Initialisierung mit einem Rundungsfehler erfolgt durch 'value' = Rundungsfehler und 'prec' = -1.
gerundete Fließkommazahl; aktueller Rundungsfehler beim Zurücksetzen 0 beim Initialisieren
.... mround (0, 0); f_value = mround (3.147, 2); /* f_value = 3.15 */ f_value = mround (3.146, 2); /* f_value = 3.14 */ ....
int lineprops (int pagebreak)
Schaltet das Zeilenattribut 'pagebreak' für nachfolgende Zellenzuweisungen ein bzw. aus. 'pagebreak' erlaubt bzw. verbietet einen Seitenumbruch nach dem Drucken einer Zeile.
0
.... nextline (S_NORM); lineprops (0); cellprops (A_LEFT, F_NORM, SLANT,C_FOR,C_BACK,C_LINE, L_WIDTH, 0, PREC); nextcell (cell_ypos, cell_xpos, print_width * 10, S_NORM, VSPACE); curcell = "Text" nextcell (cell_ypos, cell_xpos, print_width * 10, S_NORM, VSPACE); curcell = "darf" nextcell (cell_ypos, cell_xpos, print_width * 10, S_NORM, VSPACE); curcell = "nicht" nextcell (cell_ypos, cell_xpos, print_width * 10, S_NORM, VSPACE); curcell = "umgebrochen" nextcell (cell_ypos, cell_xpos, print_width * 10, S_NORM, VSPACE); curcell = "werden" nextline (S_NORM); lineprops (1); nextcell (cell_ypos, cell_xpos, print_width * 10, S_NORM, VSPACE); ....
int pagesize (text format)
Setzt die Papiergröße für den aktuellen Ausdruck. Folgende Papierfromate werden erkannt:
0
.... pagesize ("letter"); ....
int orientation (int orient)
Dreht die Ausgabe auf dem Papier gegen den Uhrzeigersinn.
0
.... orientation (2); /* erzeugt 'landscape'-Format */ ....
int openrw (text filename, int mode)
Öffnet die Datei 'filename' im Modus 'mode'. Es können maximal 20 Dateien gleichzeitig geöffnet sein.
id - Dateibeschreibungsnummer -1 - Fehler
.... if ( (file = openrw ("/tmp/myfile", 2)) < 0) { ret = -1; } else { if (dbopencursor (arti)) { ret = -1; } else { while (! (i = dbfetchcursor (arti))) { line = ""; line = line + arti.ART_ARTI_ARTI.m + "|"; line = line + arti.BEZ1_ARTI_ARTI.m + "|"; writeline (file, line); } dbclosecursor (arti); closerw (file); } } ....
int closerw (int file)
Schließt die Datei mit der Dateibeschreibungsnummer file.
0 - Datei wurde geschlossen
-1 - Fehler
.... if ( (file = openrw ("/tmp/myfile", 2)) < 0) { return -1; } .... closerw (file); ....
int fdprocopen (text command, text mode)
Erzeugt eine UNIX-pipe zu dem Kommando 'command' im Modus 'mode'. Abhängig von 'mode' kann diese anschließend mit 'readline' bzw. 'writeline' bearbeitet werden.
id - Dateibeschreibungsnummer
-1 - Fehler
.... if ( (file = fdprocopen ("/bin/ls /etc", "r")) < 0) { return -1; } while (line = readline (file)) { ... } fdprocclose (file); ....
int fdprocclose (int fd)
Schließen einer mit 'fdprocopen erzeugten Unix-pipe.
fd - Dateibeschreibungsnummer
-1 - Fehler
sonst - 'exit'-status des ausgeführten UNIX-Befehls.
text readline (int file)
Liest die nächste Zeile aus der Datei mit der Dateibeschreibungsnummer file. Die eingelesene Zeile darf die Zeilenlänge 1023 nicht überschreiten.
Zeichenkette mit Zeileninhalt (leere Zeichenkette bei Fehler oder Dateiende);
... if ( (file = openrw ("/tmp/myfile", 1)) < 0) { ret = -1; } else { while (1) { artikelnr = readline (file); if (!strlen (artikelnr)) { break; } artikelbez = readline (file); if (!strlen (artikelbez)) { break; } arti.ART_ARTI_ARTI.s = artikelnr; if (dbopencursor (arti)) { break; } else { i = dbfetchcursor (arti); if (i) { break; } } dbclosecursor (arti); arti.BEZ1_ARTI_ARTI.m = artikelbez; ret = dbupdate (arti); if (ret) { break; } } closerw (file); } ...
int writeline (int file, text line)
Schreibt eine Zeile in die Datei mit der Dateibeschreibungsnummer file.
0 - Zeile wurde geschrieben
-1 - Fehler
... if ( (file = openrw ("/tmp/myfile", 2)) < 0) { ret = -1; } else { if (dbopencursor (arti)) { ret = -1; } while (!(i = dbfetchcursor (arti))) { if (writeline (file, arti.ART_ARTI_ARTI.m) < 0) { ret = -1; break; } if (writeline (file, arti.BEZ1_ARTI_ARTI.m) < 0) { rc = -1; break; } } dbclosecursor (arti); closerw (file); } ....
int printdocument ()
Startet explizit den Ausdruck eines Dokuments, gibt alle zugewiesenen Zellen frei, und setzt die Dokumentenvariablen 'curline' und 'curpage' zurück.
0 - kein Fehler
-1 - Fehler
/* Dokument 1 vorbereiten */ curcell = "Dokument 1"; ... /* Dokument 1 ist vorbereitet */ printdocument (); /* Dokument 2 vorbereiten */ curcell = "Dokument 2"; ... /* Dokument 2 ist vorbereitet */ printdocument (); ...
int strlen (text string)
Gibt die Länge der Zeichenkette zurück.
Länge der Zeichenkette
.... if (strlen (arti.BEZ1_ARTI_ARTI.m)) { .... } ....
int tempnam ()
Erzeugt einen eindeutigen temporären Dateinamen.
Dateiname
.... newfile = tempnam (); openrw (newfile, 2); ....
int strcmp (text string_1, text string_2)
Vergleicht die zwei Zeichenketten string_1 und string_2 lexikographisch.
Ganzzahl
.... if (!(strcmp (arti.ART_ARTI_ARTI.m, "ART-00001"))) { /* artikelnummer ist "ART-00001" */ .... } else { /* artikelnummer ist nicht "ART-00001" */ .... }
int strncmp (text string_1, text string_2, int n)
Vergleicht die ersten n Zeichen der zwei Zeichenketten string_1 und string_2 lexikographisch. (siehe strcmp).
int getmxuid ()
Liefert die Benutzerkennung des angemeldeten Benutzers.
keine.
Benutzerkennung des angemeldeten Benutzers als Integer.
.... uid = getmxuid (); ...
int getmxlogname ()
Liefert den Benutzernamen des angemeldeten Benutzers.
keine.
Benutzernamen des angemeldeten Benutzers.
... username = getmxlogname (); ...
text getmxhome ()
Liefert das 'Home'-Verzeichnis des laufenden Daemons 'mxd'.
keine.
Verzeichnisname
... esshome = getmxhome (); ....
text getflogo ()
Über die Druckeinstellungen oder Benutzereinstellungen können zwei Logo-Dateien konfiguriert werden, die dazu dienen, auf der ersten bzw. allen weiteren Seiten eines Ausdrucks zu erscheinen. Die Funktion liefert den Dateinamen.
keine.
Logodatei
... firstlogo = getflogo (); ....
text getnlogo ()
Über die Druckeinstellungen oder Benutzereinstellungen können zwei Logo-Dateien konfiguriert werden, die dazu dienen, auf der ersten bzw. allen weiteren Seiten eines Ausdrucks zu erscheinen. Die Funktion liefert den Dateinamen.
keine.
Logodatei
... nextlogo = getnlogo (); ....
int ferrsprintf (int num, ...)
Dient zum erzeugen von Fehlermeldungen an der Benutzeroberfläche. Mit 'num' wird aus der Datei 'mxerrs' ein Format-String wie in UNIX-printf gesucht. Die weiteren Parameter müßen gemäß dieses Formats korrekt angegeben werden.
0
... ferrsprintf (9600, "myfile"); /* Ergebnis: "9600: Datei myfile konnte nicht geöffnet werden." */ ....
int fnotesprintf (int num, ...)
Dient zum erzeugen von Notizmeldungen an der Benutzeroberfläche. Siehe 'ferrsprintf'.
int callmask (MASKEN-Variable)
Springt von einem Formular in die als Prameter übergebene Maske.
ACHTUNG: Beim Sprung in die Maske erfolgt keine Abgrenzung.
Man kann versuchen mit den folgenden Zeilen eine Abgrenzung durch zuführen. Dieses funktionierte aber nicht.
bausp.ART_BAUSP_BAUSP.s = arti.ART_RTI_ARTI.m; setcurfieldselcont (bausp.ART_BAUSP_BAUSP);
Masken-Variable
unbekannt
int main () { mask ARTI arti; mask BAUSP bausp;
int ret;
ret = 0;
getcurmaskcont (arti);
ret = callmask (bausp);
return ret; }
int callmaskpb (Maskentitle-Nummer)
Springt von einem Formular über den Maskenbaum in eine Maske mit der angegebenen Masken-Title-Nummer.
ACHTUNG: Dieser Sprung kann nur erfolgen, wenn die Maske in der NMGIVELIST angegeben wurde. Beim Sprung in die Maske erfolgt keine Abgrenzung.
Masken-Title-Nummer
unbekannt
Beim Estellen von Bestandsauskunft-Daten sollen beim Aufruf aus dem Artielstamm die Sätze nach der Abgrenzung auf Lagerort, Variante und Artikelcharge erfolgtn, Betritt man die Maske Bestandsauskunft über die Auftrags-Positionen so sollen alle Werte aufsummiert nach Artikel-Nummer angezeigt werden,
ACHTUNG: Dieses funktioniert nur da beim Aufruf des Formulars atrp_button_artibestand.ssr nur ein Satz angelegt wird.
Datei atrp_mask.deh
OS_UPDATEMASK MASKNAME {
OS_NMGIVELIST OS_BEFORE OS_FIRST {
ARTIBESTAND OS_NOMPD { $ VNR _ TABNAME _ MASKNAME $, ART_ARTIBESTAND_ARTIBESTAND; $ VNR _ TABNAME _ MASKNAME $, ART_ARTIBESTAND_ARTIBESTAND, OS_TGSEL; } }
}
Datei atrp_button_bestand.ssr. Mit dem Aufruf der Funktion arti_atrp_artibestand() werden die Daten in der Tabelle artibestend geläöscht und neu angelegt.
int main () {
mask ATRP atrp; // Variable für Maske arti.def text sqlstatement; // Variable zur Aufnahme eines Sql-Statements
MC_DEBUG(LOG_NOTICE, "Start Funktion main Parameter keine");
if (getcurmaskcont(atrp)) { MC_DEBUG(LOG_ERROR, "Maske konnte nicht gesetetzt werden"); return -2; }
if (arti_atrp_artibestand(atrp)) { MC_RETURN(LOG_ERROR, 1044300, -1); }
if (callmaskpd(getmasktitle("ARTIBESTAND"))) { MC_RETURN(LOG_ERROR, 1044300, -1); }
return 0;
}