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

[email protected]

41 © Andreas Prouza 2011