© Andreas Prouza 20111 Andreas Prouza [email protected] Web Programmierung mit CGI, ILE...

41
© Andreas Prouza 2011 1 Andreas Prouza [email protected] Web Programmierung mit CGI, ILE RPG und SQL

Transcript of © Andreas Prouza 20111 Andreas Prouza [email protected] Web Programmierung mit CGI, ILE...

Page 1: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© Andreas Prouza 2011 1

Andreas [email protected]

Web Programmierung mit CGI, ILE RPG und SQL

Page 2: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© Andreas Prouza 2011 2

Themen

CGI Technik Installation Webserver Aufruf von CGI (RPG) Programmen via

HTTP Kommunikation Client mit RPG Programm SQL Optimierung

Page 3: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

Abkürzungen

CGICommon Gateway Interface

RPGReport Program Generator

SQLStructured Query Language

© Andreas Prouza 2011 3

Page 4: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

CGI Technik

© Andreas Prouza 2011 4

Page 5: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

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 5

Page 6: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

RPG Aufruf (httpd.conf)

http://192.168.0.10:95/pgms/dfmtest.pgm LIB: WFM40OBJ PGM: DFMTEST

© Andreas Prouza 2011 6

Page 7: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

Kommunikation Client RPG

HTML-Buffer einlesenQtmhRdStin

HTML-Buffer ausgebenQtmhWrStout

Umgebungs-Variable einlesenQtmhGetEnv

© Andreas Prouza 2011 7

Page 8: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

QtmhRdStin

D*=====================================

D*?API StdIn

D*=====================================

DAPIStdIn C 'QtmhRdStin'

DInData S 4096A INZ

DInDataln S 9B 0 INZ(4096)

DInActLn S 9B 0

© Andreas Prouza 2011 8

Page 9: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

QtmhWrStout

D*======================================

D*?API StdOut

D*======================================

DAPIStdOut C 'QtmhWrStout'

DOutBuff S 4096A INZ

DOutBuffln S 9B 0 INZ(4096)

© Andreas Prouza 2011 9

Page 10: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

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

Page 11: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

RPG Aufruf

© Andreas Prouza 2011 11

Page 12: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

RPG Aufruf 2 (LOGIN)

© Andreas Prouza 2011 12

Page 13: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

PGM-Aufruf via HTML

<formaction="/pgms/WFM30AX.PGM" name="login" method="POST">

© Andreas Prouza 2011 13

Page 14: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

Programm-Beispiel RPG

C*================================

C** ?Buffer

C*================================

C CALLB APIStdIn

C PARM ' ' INData

C PARM INDataLn

C PARM INActLn

C PARM QUSEC

© Andreas Prouza 2011 14

Page 15: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

Webseite

© Andreas Prouza 2011 15

Page 16: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

Datenstrom Client PGM

&Feld=Wert Konvertierung von Zeichen

& %50Blank +

&P3TXT=Muster+%50+Maxi&P3DP=&DRPLG=G&[email protected]&DRPSL=U

© Andreas Prouza 2011 16

Page 17: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

HTML-Beispiele

Workflows Stammdaten Client/Server

FilterFirmenabgleichDynamischer SQL Aufbau

© Andreas Prouza 2011 17

Page 18: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© Andreas Prouza 2011 18

Index

Binary Radix Tree IndexLogischer Baum

Encoded Vector Index (EVI)Auch Bitmap Index genannt

Page 19: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

Binary Radix Tree Index

Seit 1988 Verwendung

AuswahlkriterienSortierung

Summe der DS < 70 % - 80 % Entscheidung vom Optimizer

© Andreas Prouza 2011 19

Page 20: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© Andreas Prouza 2011 20

Binary Radix Tree Index

Node

A

Node

W

Node

Al

Node

Am

Node

An

Node

Wien

Node

Wies

Leaf Node

08 Allensteig

Leaf Node

04 Amstetten09 Ammersee

Leaf Node

06 Ansfelden07 Andorf

Node

Alt

Node

All

Leaf Node

02 Altheim05 Althofen

Leaf Node

01 Wien03 Wiener Neustadt

Leaf Node

10 Wiesbaden

Root

Page 21: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

Encoded Vector Index (EVI)

Seit 1998 (10 Jahre später) Verwendung

GruppierungZeilenauswahlLogische Operationen (AND, OR, …)

Summe der DS 20 % – 70 % Entscheidung vom Optimizer

© Andreas Prouza 2011 21

Page 22: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© Andreas Prouza 2011 22

Encoded Vector Index (EVI)

System TabelleUnique-KeyStatistiken

Vector

ErsterSatz

12345678910

Eindeutiger Schlüssel

AllensteigAmstettenAltheimAlthofenAndorfAnsfeldenAmmerseeWienWiener NeustadtWiesbaden

BinärCode

117382519135732

LetzterSatz

1121951935884536793185

Anzahl

16241971153410

Page 23: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© Andreas Prouza 2011 23

DB2 Engine

SQE (SQL Query Engine)Eingeführt ab V5R2

CQE (Classic Query Engine)

Page 24: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© Andreas Prouza 2011 24

CQE

Page 25: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© Andreas Prouza 2011 25

SQE

Page 26: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© Andreas Prouza 2011 26

DDS vs. DDL

DDL Data Definition LanguageCREATE TABLE

DDS Data Description Specifications

Page 27: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© Andreas Prouza 2011 27

DDS vs. DDL

DDS ist stabilisiertKeine Neuheiten

DDS ist potentielle Gefahr für SQE DDL bieten viele Möglichkeiten

(Index, MQTs, UDF, SP, …)

Page 28: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© Andreas Prouza 2011 28

Native I/O vs. SQL

Native I/O (z.B. in RPG)READEWRITEDELETEUPDATE

SQLSELECT * FROM TABLE

Page 29: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© Andreas Prouza 2011 29

Native I/O

Fixer ZugriffspfadDadurch kein Overhead wie bei SQLDirekter Datenzugriff

Page 30: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© Andreas Prouza 2011 30

SQL

Dynamischer ZugriffspfadImmer der Optimale

Internationale Sprache Anpassungen sind einfacher Plattform unabhängiger Zugriff Monitoring

Page 31: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© 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.

Page 32: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© Andreas Prouza 2011 32

Index Advisor

Vorschläge vom System Mit statistische Informationen Art des Vorschlages (Binär, EVI)

Page 33: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© Andreas Prouza 2011 33

Materialized Query Table

Eine Tabelle ähnlich wie ein View erstellt.

Daten sind Physisch vorhanden Aktualisierung der Daten geschieht

manuell

Page 34: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© Andreas Prouza 2011 34

MQT

VorteilSchneller Zugriff durch AufteilungZusätzliche Indizes möglich

NachteilSpeicherverbrauchKnow-How

Page 35: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

Stored Procedure (SP)

SQL Prozedur Externe Prozedur

© Andreas Prouza 2011 35

Page 36: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© Andreas Prouza 2011 36

User-Defined Function

Sourced UDF SQL UDF External UDF

Page 37: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© Andreas Prouza 2011 37

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

Page 38: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© Andreas Prouza 2011 38

Error Handling

Whenever Statement Get Diagnostic Statement

Page 39: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

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

Page 40: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

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 40

Page 41: © Andreas Prouza 20111 Andreas Prouza Andreas.Prouza@tasklink.com Web Programmierung mit CGI, ILE RPG und SQL.

© Andreas Prouza 2011 41

Danke!

Fragen?

Andreas Prouza

[email protected]