Transcript CGI mit RPG
Web Programmierung mit CGI, ILE RPG und SQL
Andreas Prouza [email protected]
1 © Andreas Prouza 2011
2 Themen CGI Technik Installation Webserver Aufruf von CGI (RPG) Programmen via HTTP Kommunikation Client mit RPG Programm SQL Optimierung © Andreas Prouza 2011
3
Abkürzungen
CGI Common Gateway Interface RPG Report Program Generator SQL Structured Query Language © Andreas Prouza 2011
CGI Technik
4 © Andreas Prouza 2011
5
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 6 © Andreas Prouza 2011
7
Kommunikation Client
RPG
HTML-Buffer einlesen QtmhRdStin HTML-Buffer ausgeben QtmhWrStout Umgebungs-Variable einlesen QtmhGetEnv © Andreas Prouza 2011
QtmhRdStin
D *===================================== D *?API StdIn D *===================================== D APIStdIn C 'QtmhRdStin' D InData D InDataln S S 4096 A 9 B 0 INZ INZ(4096) D InActLn S 9 B 0 © Andreas Prouza 2011 8
QtmhWrStout
D *====================================== D *?API StdOut D *====================================== D APIStdOut C 'QtmhWrStout' D OutBuff D OutBuffln S S 4096 A 9 B 0 INZ INZ(4096) © Andreas Prouza 2011 9
Programm-Beispiel RPG
C *================================ C ** ?Buffer
C *================================ C ' ' checkr OutBuff in C CALLB APIStdOut C PARM OutBuff C PARM in OutBuffLn C PARM QUSEC © Andreas Prouza 2011 10
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">
© Andreas Prouza 2011 13
Programm-Beispiel RPG
C C C C *================================ C ** ?Buffer
C *================================ C CALLB APIStdIn PARM ' '
INData
PARM INDataLn PARM INActLn C PARM QUSEC © Andreas Prouza 2011 14
Webseite
15 © Andreas Prouza 2011
Datenstrom Client
PGM
&Feld=Wert Konvertierung von Zeichen & %50 Blank +
& P3TXT =Muster+%50+Maxi & P3DP = & DRPLG =G & P3 ML [email protected]
& DRPSL =U
© Andreas Prouza 2011 16
17
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 18 © Andreas Prouza 2011
19
Binary Radix Tree Index
Seit 1988 Verwendung Auswahlkriterien Sortierung Summe der DS < 70 % - 80 % Entscheidung vom Optimizer © Andreas Prouza 2011
Binary Radix Tree Index Root Node A Node W Node Al Node Am Node An Node Wien Node Wies Node All Node Alt Leaf Node 04 Amstetten 09 Ammersee Leaf Node 06 Ansfelden 07 Andorf Leaf Node 08 Allensteig Leaf Node 02 Altheim 05 Althofen 20 © Andreas Prouza 2011 Leaf Node 01 Wien 03 Wiener Neustadt Leaf Node 10 Wiesbaden
21
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 1 17 38 25 1 9 13 5 7 32 Binär Code Eindeutiger Schlüssel Allensteig Amstetten Altheim Althofen Andorf Ansfelden Ammersee Wien Wiener Neustadt Wiesbaden Erster Satz 1 2 3 4 5 6 7 8 9 10 Letzter Satz 1 121 95 193 5 88 45 367 93 185 Anzahl 1 6 2 4 1 9 7 115 34 10 Vector © Andreas Prouza 2011 22
DB2 Engine SQE (SQL Query Engine) Eingeführt ab V5R2 CQE (Classic Query Engine) 23 © Andreas Prouza 2011
CQE 24 © Andreas Prouza 2011
SQE 25 © Andreas Prouza 2011
DDS vs. DDL
DDL Data Definition Language CREATE TABLE DDS Data Description Specifications 26 © Andreas Prouza 2011
27
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
28
Native I/O vs. SQL
Native I/O (z.B. in RPG) READE WRITE DELETE UPDATE SQL SELECT * FROM TABLE © Andreas Prouza 2011
Native I/O
Fixer Zugriffspfad Dadurch kein Overhead wie bei SQL Direkter Datenzugriff 29 © Andreas Prouza 2011
30
SQL
Dynamischer Zugriffspfad Immer der Optimale Internationale Sprache Anpassungen sind einfacher Plattform unabhängiger Zugriff Monitoring © Andreas Prouza 2011
31
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) 32 © Andreas Prouza 2011
33
Materialized Query Table
Eine Tabelle ähnlich wie ein View erstellt.
Daten sind Physisch vorhanden Aktualisierung der Daten geschieht manuell © Andreas Prouza 2011
34
MQT
Vorteil Schneller Zugriff durch Aufteilung Zusätzliche Indizes möglich Nachteil Speicherverbrauch Know-How © 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 © Andreas Prouza 2011 37
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]
© Andreas Prouza 2011 39
40
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
41 © Andreas Prouza 2011