Perl-Commandos
Perl-Scripte können unter anderem dazu dienen unter dem ESS Abläufe zu automatisieren. Der Import bzw. Export von Datensätzen kann so durchgeführt werden oder jede andere Funktion statt aus der Oberfläche (z.B. über Buttons) durch Aufruf der entsprechenden Funktionen ausgeführt werden.
Die unten abgebildeten Funktionen werden unter src/programs/perl/ in der Datei ess.xs mitgeliefert.
Perl-Beispiel-Programme sind ebenfalls in diesem Verzeichnis zu finden.
Beschreibung der Funktionen
Einem Aufruf der Funktionen muss immer 'ESS::' vorausgehen. Dies ist eine Klassenreferenz für die Namen der Funktionen. Die Funktionen sind folgendermaßen aufgebaut:
int update (fd) (Rückgabewert) Funktionsname Übergabeparameter
Datei ess xs:
#include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include <stdio.h> #include "libif.h"
MODULE = Ess PACKAGE = Ess
PROTOTYPES: DISABLE
int update(fd) //bewirkt eine Änderung auf der int fd //Datenbank CODE: //(entspricht dem Button F2) RETVAL = ess_dbupdate(fd); OUTPUT: RETVAL int delete(fd) //Löscht einen (unreferenzierten!) int fd //Datensatz aus der Datenbank CODE: RETVAL = ess_dbdelete(fd); OUTPUT: RETVAL
int insert(fd) //Fügt einen Datensatz in die Datenbank ein int fd CODE: RETVAL = ess_dbinsert(fd); OUTPUT: RETVAL
int dbnext(fd) //wechselt auf den nächsten Daten- int fd //satz der aktuellen Maske(blättern) CODE: RETVAL = ess_dbnext(fd); OUTPUT: RETVAL
int backtake(fd, sel) //wechselt mit selektierten Daten int fd //auf den vorherigen Datensatz int sel CODE: RETVAL = ess_backtake(fd, sel); OUTPUT: RETVAL
int godetail(fd, sel) //wechselt auf die Maskenansicht des int fd //ausgewählten Datensatzes int sel CODE: RETVAL = ess_godetail(fd, sel); OUTPUT: RETVAL
int back(fd) //geht ohne Daten zurück int fd //auf die vorherige Maske CODE: RETVAL = ess_back(fd); OUTPUT: RETVAL
int reset(fd) //löschtden Maskeninhalt int fd CODE: RETVAL = ess_reset(fd); OUTPUT: RETVAL
int next(fd, fn) //Wechseln über Feldverknüpfung in int fd //verknüpften Datensatz. char *fn CODE: RETVAL = ess_next(fd, fn); OUTPUT: RETVAL
int formscript(fd, title) //ruft das als Parameter übergebene int fd // Formscript auf int title CODE: RETVAL = ess_formscript(fd, title); OUTPUT: RETVAL
int maskpd(fd, title) //entspricht dem Maskenpulldown; int fd //wechselt in eine verknüpfte Maske int title //als Parameter muss ihre Titel- CODE: //nummer angegeben werden RETVAL = ess_maskpd(fd, title); OUTPUT: RETVAL
int maskpdbyname(fd, mname) //siehe maskpd int fd //als Parameter kann der Name der char *mname //Maske, in die gewechselt werden CODE: //soll, angegeben sein RETVAL = ess_maskpdbyname(fd, mname); OUTPUT: RETVAL
int setfield(fd, fn, val) //setzt einen Text in ein Feld int fd char *fn char *val CODE: RETVAL = ess_setfield(fd, fn, val); OUTPUT: RETVAL char * getfield(fd, fn) //holt einen Feldtext int fd char *fn CODE: RETVAL = ess_getfield(fd, fn); OUTPUT: RETVAL
int gopath(fd, path) //zeigt den Maskenbaum zum aktuellen int fd //Pfad an char *path CODE: RETVAL = ess_gopath(fd, path); OUTPUT: RETVAL
int connect(host, port, user, pass) //bewirkt einen Verbindungsaufbau char *host hort port char *user char *pass CODE: RETVAL = ess_connect(host, port, user, pass); OUTPUT: RETVAL void settracelevel(lev) //setzt einen Tracelevel für Debugunsigned int lev //informationen CODE: ess_settracelevel(lev);
char * getstack(fd) //gibt den aktuellen Pfad (Pointer) int fd CODE: RETVAL = ess_getstack(fd); OUTPUT: RETVAL
int select(fd) //entspricht dem “go“-Button zur int fd //Suche nach Datensätzen CODE: RETVAL = ess_dbselect(fd); OUTPUT: RETVAL
int selectic(fd) //entspricht dem case-sensitiven int fd //“Go“-Button zur Suche nach CODE: //Datensätzen RETVAL = ess_dbselectic(fd); OUTPUT: RETVAL
int order(fd) // int fd CODE: RETVAL = ess_dborder(fd); OUTPUT: RETVAL
int goorder(fd) int fd CODE: RETVAL = ess_dbgoorder(fd); OUTPUT: RETVAL
int goselect(fd) //entspricht dem Suchen-Button; int fd //geht zur Abgrenzungsmaske CODE: RETVAL = ess_dbgoselect(fd); OUTPUT: RETVAL void disconnect(fd) //bewirkt eine Unterbrechnung der int fd //Verbindung CODE: ess_disconnect(fd);
void connectinfo(fd) //gibt Information über die Ver int fd //bindung zum mxd CODE: ess_connectinfo(fd);
char * error() //gibt Fehlermeldung aus CODE: RETVAL = ess_error(); OUTPUT: RETVAL
int rows(fd) //gibt die selektierte Menge der int fd //Datensätze aus der Datenbank CODE: RETVAL = ess_rows(fd); OUTPUT: RETVAL
char * fieldlist(fd, type) //listet alle Maskenfelder auf int fd int type CODE: RETVAL = ess_fieldlist(fd, type); OUTPUT: RETVAL
char * apperror(fd) //gibt Fehlermeldung aus Formularen int fd CODE: RETVAL = ess_apperror(fd); OUTPUT: RETVAL
char * appnote(fd) //entspricht den Fehlermeldungen int fd CODE: RETVAL = ess_appnote(fd); OUTPUT: RETVAL
void seterrexit( onoff) //Globale Variable: int onoff //bewirkt ein Programmende im Falle CODE: //einer Fehlermeldung ess_seterrexit(onoff);
int maxrows(fd, rows) //beschränkt die Datensatzmenge, die int fd; //angezeigt werden soll. int rows; CODE: RETVAL = ess_maxrows(fd, rows); OUTPUT: RETVAL
int gosurvorder(fd) //geht zur Maske, die eine Übersicht int fd; //definiert CODE: RETVAL = ess_gosurvorder(fd); OUTPUT: RETVAL
int survorder(fd) //definiert die Übersicht int fd; CODE: RETVAL = ess_survorder(fd); OUTPUT: RETVAL
int survey(fd) //gibt eine Übersicht der aktuellen int fd; //Datensätze CODE: RETVAL = ess_survey(fd); OUTPUT: RETVAL
int setsinglemode(fd, mode) //je nach Einstellung wird ein Feld- int fd; //inhalt sofort an den mxd geschickt
int mode; //oder er bleibt local CODE: RETVAL = ess_setsinglemode(fd, mode); OUTPUT: RETVAL
char * getnextfield(fd, flag) //wechselt ins nächste Maskenfeld int fd; int flag; CODE: RETVAL = ess_getnextfield(fd, flag); OUTPUT: RETVAL
int gosubmask(fd, fn, sel) //wechselt in die Submaske int fd; char *fn; int sel; CODE: RETVAL = ess_gosubmask(fd, fn, sel); OUTPUT: RETVAL