Web Programmierung mit CGI, ILE RPG und SQL Andreas Prouza Andreas.Prouza@tasklink.com © Andreas Prouza 2011
Themen CGI Technik Installation Webserver Aufruf von CGI (RPG) Programmen via HTTP Kommunikation Client mit RPG Programm SQL Optimierung © Andreas Prouza 2011
Abkürzungen CGI RPG SQL Common Gateway Interface Report Program Generator SQL Structured Query Language © Andreas Prouza 2011
CGI Technik © Andreas Prouza 2011
Installation Webserver /www/WebServer/conf/httpd.conf STRTCPSVR SERVER(*HTTP) HTTPSVR(*ADMIN) http://192.168.0.10:2001/HTTPAdmin Mit QSECOFR oder gleichwertigen User anmelden PDF Anleitung © Andreas Prouza 2011
RPG Aufruf (httpd.conf) http://192.168.0.10:95/pgms/dfmtest.pgm LIB: WFM40OBJ PGM: DFMTEST © Andreas Prouza 2011
Kommunikation Client RPG HTML-Buffer einlesen QtmhRdStin HTML-Buffer ausgeben QtmhWrStout Umgebungs-Variable einlesen QtmhGetEnv © Andreas Prouza 2011
QtmhRdStin D*===================================== D*?API StdIn DAPIStdIn C 'QtmhRdStin' DInData S 4096A INZ DInDataln S 9B 0 INZ(4096) DInActLn S 9B 0 © Andreas Prouza 2011
QtmhWrStout D*====================================== D*?API StdOut DAPIStdOut C 'QtmhWrStout' DOutBuff S 4096A INZ DOutBuffln S 9B 0 INZ(4096) © Andreas Prouza 2011
Programm-Beispiel RPG C*================================ C** ?Buffer C ' ' checkr OutBuff in C CALLB APIStdOut C PARM OutBuff C PARM in OutBuffLn C PARM QUSEC © Andreas Prouza 2011
RPG Aufruf © Andreas Prouza 2011
RPG Aufruf 2 (LOGIN) © Andreas Prouza 2011
PGM-Aufruf via HTML <form action="/pgms/WFM30AX.PGM" name="login" method="POST"> © Andreas Prouza 2011
Programm-Beispiel RPG C*================================ C** ?Buffer C CALLB APIStdIn C PARM ' ' INData C PARM INDataLn C PARM INActLn C PARM QUSEC © Andreas Prouza 2011
Webseite © Andreas Prouza 2011
Datenstrom Client PGM &Feld=Wert Konvertierung von Zeichen & %50 Blank + &P3TXT=Muster+%50+Maxi&P3DP=&DRPLG=G&P3ML=Maxi.Muster@tqs.at&DRPSL=U © Andreas Prouza 2011
HTML-Beispiele Workflows Stammdaten Client/Server Filter Firmenabgleich Dynamischer SQL Aufbau © Andreas Prouza 2011
Index Binary Radix Tree Index Logischer Baum Encoded Vector Index (EVI) Auch Bitmap Index genannt © Andreas Prouza 2011
Binary Radix Tree Index Seit 1988 Verwendung Auswahlkriterien Sortierung Summe der DS < 70 % - 80 % Entscheidung vom Optimizer © Andreas Prouza 2011
Binary Radix Tree Index © Andreas Prouza 2011
Encoded Vector Index (EVI) Seit 1998 (10 Jahre später) Verwendung Gruppierung Zeilenauswahl Logische Operationen (AND, OR, …) Summe der DS 20 % – 70 % Entscheidung vom Optimizer © Andreas Prouza 2011
Encoded Vector Index (EVI) System Tabelle Unique-Key Statistiken Vector © Andreas Prouza 2011
DB2 Engine SQE (SQL Query Engine) CQE (Classic Query Engine) Eingeführt ab V5R2 CQE (Classic Query Engine) © Andreas Prouza 2011
CQE © Andreas Prouza 2011
SQE © Andreas Prouza 2011
DDS vs. DDL DDL Data Definition Language CREATE TABLE DDS Data Description Specifications © Andreas Prouza 2011
DDS vs. DDL DDS ist stabilisiert Keine Neuheiten DDS ist potentielle Gefahr für SQE DDL bieten viele Möglichkeiten (Index, MQTs, UDF, SP, …) © Andreas Prouza 2011
Native I/O vs. SQL Native I/O (z.B. in RPG) SQL READE WRITE DELETE UPDATE SQL SELECT * FROM TABLE © Andreas Prouza 2011
Native I/O Fixer Zugriffspfad Dadurch kein Overhead wie bei SQL Direkter Datenzugriff © Andreas Prouza 2011
SQL Dynamischer Zugriffspfad Internationale Sprache Immer der Optimale Internationale Sprache Anpassungen sind einfacher Plattform unabhängiger Zugriff Monitoring © Andreas Prouza 2011
SQL Vielfalt an Funktionen (Order By) Mehrere Cursor für den gleichen Zugriffsplan möglich Keine Abstürze von Programmen Error Handling SQL (und SQE) wird weiter entwickelt uvm. © Andreas Prouza 2011
Index Advisor Vorschläge vom System Mit statistische Informationen Art des Vorschlages (Binär, EVI) © Andreas Prouza 2011
Materialized Query Table Eine Tabelle ähnlich wie ein View erstellt. Daten sind Physisch vorhanden Aktualisierung der Daten geschieht manuell © Andreas Prouza 2011
MQT Vorteil Nachteil Schneller Zugriff durch Aufteilung Zusätzliche Indizes möglich Nachteil Speicherverbrauch Know-How © Andreas Prouza 2011
Stored Procedure (SP) SQL Prozedur Externe Prozedur © Andreas Prouza 2011
User-Defined Function Sourced UDF SQL UDF External UDF © Andreas Prouza 2011
Tuning des Systems Aktivierungsgruppen Indizes MQTs DDS LF mit Select/Omit Spezifikation SQL immer auf Basistabellen Select Into Dynamisches SQL wieder verwenden In Blöcke einlesen © Andreas Prouza 2011
Error Handling Whenever Statement Get Diagnostic Statement © Andreas Prouza 2011
Workflow-System http://tasklink.com/ TQS EDV-Software GesmbH Tel.: +43 (2252) 508 708 - 17 Fax: +43 (2252) 508 708 - 13 andreas.prouza@tasklink.com © Andreas Prouza 2011
DB2 und RPG Schulungen http://www.erfolgsbildung.at/ DB2 Optimierung und Tuning ILE RPG Auf Anfrage mit 1 oder 2 Tage auch: CGI mit RPG © Andreas Prouza 2011
Danke! Fragen? Andreas Prouza Andreas.Prouza@tasklink.com