Web Programmierung mit CGI, ILE RPG und SQL Andreas Prouza [email protected] 1 © Andreas Prouza 2011 Themen 2 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 Report Program Generator SQL 3 Common Gateway Interface Structured Query Language © Andreas Prouza 2011 CGI Technik 4 © 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 5 © Andreas Prouza 2011 RPG Aufruf (httpd.conf) http://192.168.0.10:95/pgms/dfmtest.pgm LIB: WFM40OBJ PGM: DFMTEST 6 © Andreas Prouza 2011 Kommunikation Client RPG HTML-Buffer einlesen HTML-Buffer ausgeben QtmhWrStout Umgebungs-Variable einlesen 7 QtmhRdStin QtmhGetEnv © Andreas Prouza 2011 QtmhRdStin D*===================================== D*?API StdIn D*===================================== DAPIStdIn C 'QtmhRdStin' DInData S 4096A INZ DInDataln S 9B 0 INZ(4096) DInActLn S 9B 0 8 © Andreas Prouza 2011 QtmhWrStout D*====================================== D*?API StdOut D*====================================== DAPIStdOut C 'QtmhWrStout' DOutBuff S 4096A INZ DOutBuffln S 9B 0 INZ(4096) 9 © Andreas Prouza 2011 Programm-Beispiel RPG C*================================ C** ?Buffer C*================================ C ' ' checkr OutBuff in C CALLB APIStdOut C PARM OutBuff C PARM in OutBuffLn C PARM QUSEC 10 © Andreas Prouza 2011 RPG Aufruf 11 © Andreas Prouza 2011 RPG Aufruf 2 (LOGIN) 12 © Andreas Prouza 2011 PGM-Aufruf via HTML <form action="/pgms/WFM30AX.PGM" name="login" method="POST"> 13 © Andreas Prouza 2011 Programm-Beispiel RPG C*================================ C** ?Buffer C*================================ C CALLB APIStdIn C PARM ' ' INData C PARM INDataLn C PARM INActLn C PARM QUSEC 14 © Andreas Prouza 2011 Webseite 15 © Andreas Prouza 2011 Datenstrom Client PGM &Feld=Wert Konvertierung von Zeichen & %50 Blank + &P3TXT=Muster+%50+Maxi&P3DP=&DRPLG=G&P3 [email protected]&DRPSL=U 16 © Andreas Prouza 2011 HTML-Beispiele Workflows Stammdaten Client/Server Filter Firmenabgleich Dynamischer SQL Aufbau 17 © Andreas Prouza 2011 Index Binary Radix Tree Index Logischer Baum Encoded Vector Index (EVI) Auch Bitmap Index genannt 18 © Andreas Prouza 2011 Binary Radix Tree Index Seit 1988 Verwendung Auswahlkriterien Sortierung Summe der DS < 70 % - 80 % Entscheidung vom Optimizer 19 © Andreas Prouza 2011 Binary Radix Tree Index Root Node Node A W Node Node Node Node Node Al Am An Wien Wies Leaf Node Leaf Node 01 Wien 03 Wiener Neustadt 10 Wiesbaden Node Node Leaf Node Leaf Node All Alt 04 Amstetten 09 Ammersee 06 Ansfelden 07 Andorf Leaf Node Leaf Node 08 Allensteig 02 Altheim 05 Althofen 20 © 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 21 © Andreas Prouza 2011 Encoded Vector Index (EVI) System Tabelle Unique-Key Statistiken Binär Code 1 17 38 25 1 9 13 5 7 32 Eindeutiger Schlüssel Allensteig Amstetten Altheim Althofen Andorf Ansfelden Ammersee Wien Wiener Neustadt Wiesbaden Vector 22 © Andreas Prouza 2011 Erster Satz Letzter Satz Anzahl 1 2 3 4 5 6 7 8 9 10 1 121 95 193 5 88 45 367 93 185 1 6 2 4 1 9 7 115 34 10 DB2 Engine SQE (SQL Query Engine) 23 Eingeführt ab V5R2 CQE (Classic Query Engine) © Andreas Prouza 2011 CQE 24 © Andreas Prouza 2011 SQE 25 © Andreas Prouza 2011 DDS vs. DDL DDL Data Definition Language 26 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, …) 27 © Andreas Prouza 2011 Native I/O vs. SQL Native I/O (z.B. in RPG) READE WRITE DELETE UPDATE SQL 28 SELECT * FROM TABLE © Andreas Prouza 2011 Native I/O Fixer Zugriffspfad Dadurch kein Overhead wie bei SQL Direkter Datenzugriff 29 © Andreas Prouza 2011 SQL Dynamischer Zugriffspfad Immer der Optimale Internationale Sprache Anpassungen sind einfacher Plattform unabhängiger Zugriff Monitoring 30 © 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. 31 © Andreas Prouza 2011 Index Advisor Vorschläge vom System Mit statistische Informationen Art des Vorschlages (Binär, EVI) 32 © Andreas Prouza 2011 Materialized Query Table Eine Tabelle ähnlich wie ein View erstellt. Daten sind Physisch vorhanden Aktualisierung der Daten geschieht manuell 33 © Andreas Prouza 2011 MQT Vorteil Schneller Zugriff durch Aufteilung Zusätzliche Indizes möglich Nachteil Speicherverbrauch Know-How 34 © Andreas Prouza 2011 Stored Procedure (SP) SQL Prozedur Externe Prozedur 35 © Andreas Prouza 2011 User-Defined Function Sourced UDF SQL UDF External UDF 36 © 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 37 © Andreas Prouza 2011 Error Handling Whenever Statement Get Diagnostic Statement 38 © Andreas Prouza 2011 Workflow-System http://tasklink.com/ TQS EDV-Software GesmbH Tel.: +43 (2252) 508 708 - 17 Fax: +43 (2252) 508 708 - 13 [email protected] 39 © 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 40 © Andreas Prouza 2011 Danke! Fragen? Andreas Prouza [email protected] 41 © Andreas Prouza 2011