IBM POWER Systems i Softwareentwicklung und ‑modernisierung
– Inhalt inklusive 45. Ergänzung April 2018 –
- 1 Software-Architekturen
- 1.1 Architekturmuster
- 1.1.1 Layers/Schichten
- 1.1.2 Client/Server
- 1.1.3 MVC – Model View Controller
- 2 Rational Developer for i (RDi)
- 2.1 Installation und Pflege von RDi
- 2.1.1 System i – Installationsvoraussetzungen
- 2.1.2 Windows PC – Installationsvoraussetzungen
- 2.1.3 RDi – Installationsmedien
- 2.1.4 RDi – Software installieren
- 2.1.4.1 Installation aus dem Internet
- 2.1.4.2 Installation vom Fileserver aus
- 2.1.4.3 Lizensierung und Aktivierung
- 2.1.5 RDi – aktualisieren
- 2.1.5.1 Vom Fileserver aus aktualisieren
- 2.1.6 Unabhängige Plug-ins installieren
- 2.1.6.1 Der Plug-in-Installationsdialog
- 2.1.6.2 Das iSphere-Plug-in
- 2.2 Arbeiten mit Remote System Explorer (RSE)
- 2.2.1 Der Remote System Explorer
- 2.2.1.1 Exkurs Profile
- 2.2.2 Mit Verbindungen arbeiten
- 2.2.2.1 PTF-Stände prüfen
- 2.2.3 Arbeitsumgebung erstellen
- 2.2.3.1 Arbeitsbereiche
- 2.2.3.2 Erstellen der Arbeitsumgebung
- 2.2.3.2.1 Bibliothekslisten
- 2.3 Mit Objekten arbeiten
- 2.3.1 Bibliotheken erstellen
- 2.3.2 Quellendateien erstellen
- 2.3.3 Nachrichtendateien erstellen
- 2.3.4 Datenbereiche erstellen
- 2.3.5 Datenwarteschlangen erstellen
- 2.3.6 Daten übernehmen
- 2.3.7 Kurzzugriffe mit Filtern
- 2.4 Kompilationsumgebung setzen
- 2.5 Mit Befehlen arbeiten
- 2.6 Mit Jobs arbeiten
- 2.7 Mit dem Integrated File System arbeiten
- 2.8 Quelldaten vom System i an andere Systeme übertragen
- 2.8.1 Quellendateien zwischen Power-Systemen austauschen
- 2.8.2 Quellenteildateien ins IFS übertragen
- 2.8.3 Quellenteildateien an Windows-PC übertragen
- 2.9 RSE an eigene Bedürfnisse anpassen
- 2.9.1 Entfernen unnötiger Sichten
- 2.9.2 Benutzervorgaben für Workbench und RSE
- 2.9.3 Benutzeraktionen
- 2.10 Anwendungsdiagramme
- 2.10.1 Projekt erstellen
- 2.10.2 Projektordner erstellen
- 2.10.3 Filter erstellen
- 2.10.4 Anwendungsdiagramm erstellen
- 2.10.5 Quellen editieren
- 2.10.6 Benutzervorgaben
- 2.11 Der LPEX-Editor
- 2.11.1 Grundeinstellungen des Editors
- 2.11.1.1 Benutzervorgaben
- 2.11.1.2 LPEX aufrufen
- 2.11.1.2.1 Neue Quelle erstellen
- 2.11.1.2.2 Vorhandene Quelle bearbeiten
- 2.11.1.2.3 Quellen in leeren Editor kopieren
- 2.11.1.2.4 Quellen auf dem Server speichern
- 2.11.1.2.5 Quellen schließen
- 2.11.1.3 Navigation/Gliederung
- 2.11.1.4 Suchen/Ersetzen
- 2.11.1.5 Quellcode markieren/kopieren/einfügen/löschen
- 2.11.1.6 Quelle in mehreren Editorsichten anzeigen
- 2.11.1.7 Quellcode filtern
- 2.11.1.8 Neue Quellenzeile erzeugen
- 2.11.1.9 Quellen vergleichen
- 2.11.1.9.1 Der Vergleichseditor
- 2.11.2 Programmiersprachenspezifische Merkmale
- 2.11.2.1 RPG
- 2.11.2.1.1 Benutzervorgaben
- 2.11.2.1.2 Spaltenlineal
- 2.11.2.1.3 Content Assist
- 2.11.2.1.4 Schablonen
- 2.11.2.1.4.1 Code-Schablonen erstellen
- 2.11.2.1.5 Wizards
- 2.11.2.1.6 /COPY und /INCLUDE
- 2.11.2.1.7 Kontexthilfe
- 2.11.2.1.8 Block-Strukturen anzeigen
- 2.11.2.1.9 Einrückungen anzeigen
- 2.11.2.1.10 Kommentare setzen
- 2.11.2.1.11 Quelle formatieren
- 2.11.2.1.12 Quellen – Refaktorieren Quelle formatieren
- 2.11.2.2 Cobol
- 2.11.2.2.1 Benutzervorgaben
- 2.11.2.2.2 Content Assist
- 2.11.2.2.3 Schablonen
- 2.11.2.2.3.1 Code-Schablonen erstellen
- 2.11.2.2.4 COPY
- 2.11.2.2.5 Kontexthilfe
- 2.11.2.2.6 Kommentare setzen
- 2.11.2.3 DDS
- 2.11.2.3.1 Benutzervorgaben
- 2.11.2.3.2 Befehle prompten
- 2.11.2.3.3 Kontexthilfe
- 2.11.3 Programme umwandeln
- 2.11.3.1 Programme prüfen
- 2.11.3.1.1 Prüfen ohne Bedienerführung
- 2.11.3.1.2 Prüfen mit Bedienerführung
- 2.11.3.1.3 Prüfen in „Ferne Systeme“
- 2.11.3.2 Kompilieren
- 2.11.3.2.1 Kompilieren ohne Bedienerführung
- 2.11.3.2.2 Kompilieren mit Bedienerführung
- 2.11.3.2.3 Kompilieren in „Ferne Systeme“
- 2.11.3.2.4 Mit eigenen Kompilierungsbefehlen arbeiten – 1
- 2.11.3.2.5 Mit eigenen Kompilierungsbefehlen arbeiten – 2
- 2.11.3.2.6 Nachrichten filtern
- 2.12 Bildschirmentwurf
- 2.12.1 Screen Designer
- 2.12.2 Screen-Designer-Oberfläche
- 2.12.2.1 Screen Design Controls
- 2.12.2.2 Tools der Entwurfsoberfläche
- 2.12.2.2.1 Benutzervorgaben
- 2.12.2.2.2 Einstellungen
- 2.12.2.2.3 Die Palette
- 2.12.3 Einen neuen Bildschirm erstellen
- 2.12.3.1 Erstellung von Screen 1
- 2.12.3.1.1 FMT00 erzeugen
- 2.12.3.1.2 FMT99 erzeugen
- 2.12.3.1.3 FMT10 erzeugen
- 2.12.3.1.4 Schlüsselwörter auf Satzebene bearbeiten
- 2.12.3.2 Erstellung von Screen 2
- 2.12.3.2.1 Ordnung schaffen
- 2.12.3.2.2 Subdatei erzeugen
- 2.12.3.3 Erstellung von Screen 3
- 2.12.3.3.1 FMTWIN erzeugen
- 2.12.4 Übersicht der erstellten Dialoge
- 2.12.5 Bildschirme umwandeln
- 2.13 Listenentwurf mit Report Designer
- 2.13.1 Report Designer – Oberfläche
- 2.13.1.1 Erläuterung der Report Designer Oberfläche
- 2.13.1.2 Satzformate erstellen
- 2.13.1.3 FMT00: Druckausgabe definieren
- 2.13.1.4 FMT99: Fußformat erstellen
- 2.13.1.5 FMT10: Positionsformat erstellen
- 2.13.1.6 Berichte entwerfen
- 2.13.1.7 Eigenschaften für einzelne Felder
- 2.13.1.8 Die DDS-Quelle (unkommentiert)
- 2.13.1.9 Kompilation von Listen
- 2.14 i-Projekte
- 2.14.1 Schneller Weg zum Offline-Projekt
- 2.14.2 Die Perspektive „IBM i-Projekte“
- 2.14.3 Ein neues IBM i-Projekt
- 2.14.3.1 Projekteigenschaften ändern
- 2.14.4 Quellen importieren
- 2.14.5 Mit Quellen arbeiten
- 2.14.5.1 Eine neue Quelle erzeugen
- 2.14.6 i-Projekte und Version Controlling
- 2.14.6.1 Version Controlling mit Git
- 2.14.6.1.1 Ein neues i-Projekt anlegen
- 2.14.6.1.2 Ein lokales Git Repository erstellen
- 2.16.6.1.3 Git Masterbranch erstellen
- 2.14.6.1.4 Entwicklungs-Masterbranch erstellen
- 2.14.6.1.5 Zentrales GiT Repository nutzen
- 2.14.6.1.6 Remote-Zugang zwischen EGit und IBM i Repository
- 2.15 Der Debugger
- 2.15.1 Vorbereitung
- 2.15.2 Aufruf des Debuggers
- 2.15.2.1 Traditionelles Debuggen für OPM-Programme
- 2.15.2.2 Der RSE-Server
- 2.15.3 Die Perspektive „Debug“
- 2.15.4 Service-Eingangspunkte
- 2.15.4.1 Benutzervorgaben
- 2.15.5 Bereits laufende Jobs debuggen
- 2.16 Mit der DB2 arbeiten
- 2.16.1 Perspektiven
- 2.16.2 Die Perspektive „Daten“
- 2.16.2.1 Ein Übersichtsdiagramm erstellen
- 2.16.3 Taskstarter
- 2.16.3.1 Erste Schritte – Verbindung zu DB2 für IBM i erstellen
- 2.16.3.2 Datenentwurf
- 2.17 Die RDi-Arbeitsbereiche
- 2.17.1 Arbeitsbereiche exportieren
- 2.17.1.1 Database Connections
- 2.17.1.2 Eclipse Preferences
- 2.17.1.3 RDi Editor Templates
- 2.17.1.4 Remote Systems Artifacts
- 2.17.2 Arbeitsbereiche importieren
- 2.17.3 Arbeitsbereich für automatischen Import exportieren
- 2.17.3.1 Database Connections
- 2.17.3.2 Eclipse Preferences
- 2.17.3.3 RDi Editor Templates
- 2.17.3.4 Remote Systems Artifacts
- 3 Klassische Anwendungs-Entwicklung
- 3.1 ILE-Konzepte
- 3.1.1 Was verbirgt sich hinter dem Mysterium ILE?
- 3.1.2 Warum sollte man ILE-Konzepte verwenden?
- 3.1.3 Anwendungsmodernisierung mit ILE-Konzepten
- 3.1.4 Programmierkonzepte
- 3.1.4.1 Original Program Model (OPM)
- 3.1.4.2 Integrated Language Environment (ILE)
- 3.1.4.3 Objektorientierte Programmierung (OOP)
- 3.1.4.4 Vergleich OPM, ILE und OOP
- 3.1.5 Quellenstruktur
- 3.1.5.1 Main Procedure
- 3.1.5.2 (Sub-)Procedures
- 3.1.5.2.1 Interne Prozeduren
- 3.1.5.2.3 Funktionen
- 3.1.5.2.4 Globale und lokale Definitionen
- 3.1.6 Prototyping-Basics
- 3.1.6.1 Procedure Interface – Eingangsparameter
- 3.1.6.1.1 Input-Only-Parameter
- 3.1.6.1.2 Parameteroptionen
- 3.1.6.2 Prototyp
- 3.1.6.2.1 Prototypen für Programme und Prozeduren
- 3.1.7 ILE-Objekte
- 3.1.7.1 Module – Basis für Programme und Serviceprogramme
- 3.1.7.1.1 CL-Befehl DSPMOD – Modulinformationen anzeigen
- 3.1.7.2 Programme
- 3.1.7.2.1 Erstellen von ILE-Programmen
- 3.1.7.2.1.1 Bind by Copy – Module in Programme einbinden
- 3.1.7.2.1.2 CRTPGM – Programm erstellen
- 3.1.7.2.1.3 CRTBNDXXX – Binder-Programm erstellen
- 3.1.7.2.2 DSPPGM – Programm anzeigen
- 3.1.7.3 Verwendung von Modulen = modulare Programmierung?
- 3.1.7.3.1 Von der Copy-Strecke zum Modul
- 3.1.7.3.1.1 Ursprünglicher Source Code mit Copy-Strecken
- 3.1.7.3.1.2 Modifizierter Source Code: Modul statt Copy-Strecke
- 3.1.7.3.2 Von der Main-Procedure zur Sub-Procedure
- 3.1.7.3.3 Von der Sub-Procedure zur Funktion
- 3.1.7.4 Serviceprogramm
- 3.1.7.4.1 Erstellen von Serviceprogrammen
- 3.1.7.4.2 Bind by Reference über die Signatur des Serviceprogramms
- 3.1.7.4.3 CRTSRVPGM – Serviceprogramm erstellen
- 3.1.7.4.4 DSPSRVPGM – Serviceprogramm anzeigen
- 3.1.7.4.5 Vom Modul zum Serviceprogramm
- 3.1.7.5 Neue Prozeduren in Serviceprogrammen
- 3.1.8 Bindersprache
- 3.1.8.1 Erstellen/Aktualisieren eines Serviceprogramms mit Bindersprache
- 3.1.8.2 Komponenten der Bindersprache
- 3.1.8.2.1 Befehl STRPGMEXP – Programmexportliste starten
- 3.1.8.2.2 Bindersprache: Befehl EXPORT
- 3.1.8.2.3 Bindersprache: Befehl ENDPGMEXP
- 3.1.8.2.4 Beispiel Binderquelle
- 3.1.8.3 CL-Befehl: RTVBNDSRC – Binderquelle abrufen
- 3.1.8.4 Beispiel: Serviceprogramm mit fixer Signatur
- 3.1.8.5 Beispiel: Serviceprogramm mit mehreren Signaturen
- 3.1.9 Binderverzeichnis
- 3.1.9.1 Binderverzeichnis erstellen
- 3.1.9.2 Binder-Verzeichniseinträge erstellen
- 3.1.9.3 Regeln zur Verwendung von Binderverzeichnissen
- 3.1.9.4 Zweistufige Kompilierung mit Binderverzeichnissen
- 3.1.9.5 Einstufige Kompilierung mit Binderverzeichnissen
- 3.1.9.6 Befehl CRTBNDxxx mit Binderverzeichnis
- 3.1.9.6.1 H-Bestimmungen für ILE-Optionen in RPG-Quellen
- 3.1.9.6.1.1 Compiler-Direktiven für ein- oder zweistufige Kompilierung
- 3.1.9.6.2 CL-Befehl DCLPRCOPT für ILE-Optionen in CL-Quellen
- 3.1.10 Ausführung von Programmen und Serviceprogrammen
- 3.1.10.1 Aktivierung von Programmen und Serviceprogrammen
- 3.1.10.2 Deaktivierung von Programmen und Serviceprogrammen
- 3.1.10.2.1 Deaktivierung von OPM-Programmen
- 3.1.10.2.2 Deaktivierung von ILE-Programmen
- 3.1.10.3 Was sind Aktivierungsgruppen?
- 3.1.10.4 Standard/Default-Aktivierungsgruppen
- 3.1.10.4.1 Programme und Service-Programme in Default-Aktivierungsgruppen
- 3.1.10.4.1.1 OPM-Programme in der Default-Activation-Group
- 3.1.10.4.1.2 ILE-Programme in der Default-Activation-Group
- 3.1.10.4.1.3 Serviceprogramme in der Default-Activation-Group
- 3.1.10.5 Aktivierungsgruppe *NEW
- 3.1.10.6 Aktivierungsgruppe *CALLER
- 3.1.10.7 Benannte Aktivierungsgruppen
- 3.1.10.7.1 Programme in benannten Aktivierungsgruppen
- 3.1.10.7.2 Serviceprogramme in benannten Aktivierungsgruppen
- 3.1.10.7.3 Aktivierungszeitpunkt von Serviceprogrammen
- 3.1.10.8 Aktivierungsgruppen und Dateiüberschreibungen
- 3.1.10.8.1 Dateiüberschreibungen setzen
- 3.1.10.8.2 Dateiüberschreibungen zurücknehmen
- 3.1.10.9 Aktivierungsgruppen und Commit-Definitionsbereich
- 3.1.10.9.1 Commitment-Steuerung und SQL
- 3.1.10.10 Aktivierungsgruppen und Open Data Paths (ODPs)
- 3.1.10.10.1 Empfehlungen im Umgang mit Aktivierungsgruppen
- 3.1.11 Tipps für ILE-Anwendungen
- 3.2 RPG
- 3.2.1 RPG-Versionen
- 3.2.2 RPG-Formate
- 3.2.2.1 Fixformat RPG
- 3.2.2.2 Free-Format RPG (erste Version)
- 3.2.2.3 Free-Format RPG (finale Version)
- 3.2.3 RPG-Editoren
- 3.2.4 RPG-Bestimmungen
- 3.2.4.1 Kommentare
- 3.2.4.2 Steuerbestimmungen
- 3.2.4.3 RPG-Dateibestimmungen
- 3.2.4.4. Definitionsbestimmungen
- 3.2.4.4.1 Schlüsselwörter für Definitionsbestimmungen
- 3.2.4.5 RPG-Rechenbestimmungen
- 3.2.4.5.1 Groß- und Kleinschreibung
- 3.2.4.5.2 Wertzuweisungen
- 3.2.5 RPG und Embedded SQL
- 3.2.5.1 Welche Vorteile bietet der Einsatz von embedded SQL?
- 3.2.5.2 Embedded SQL und Query-Optimierung
- 3.2.5.3 Voraussetzungen für embedded SQL
- 3.2.5.3.1 Quellen-Teildateien mit embedded SQL
- 3.2.5.3.2 Codierung von SQL-Befehlen im Quellcode
- 3.2.5.3.2.1 Codierung von SQL-Befehlen im fixen RPG-Format
- 3.2.5.3.2.2 Codierung von SQL-Befehlen in Free-Format RPG
- 3.2.5.3.2.3 Codierung von SQL-Befehlen in Cobol
- 3.2.5.3.2.4 Kommentare in (embedded) SQL-Befehlen
- 3.2.5.3.3 Erstellung von Objekten mit embedded SQL
- 3.2.5.3.3.1 Kompilierungsbefehle
- 3.2.5.3.3.2 Kompilierung von Modulen/Programmen mit embedded SQL
- 3.2.5.3.3.3 SQL Communication Area (SQLCA)
- 3.2.5.3.3.4 SQL-Befehl SET OPTION
- 3.2.5.4 Verarbeitungsmethoden
- 3.2.5.5 Verwendung von Variablen
- 3.2.5.5.1 Host-Variablen
- 3.2.5.5.2 Host-Strukturen
- 3.2.5.5.3 SQL-Datentypen und RPG-Äquivalent
- 3.2.5.5.4 Indikator-Variablen
- 3.2.5.5.5 Parameter-Marker
- 3.2.5.5.6 Namenskonventionen
- 3.2.5.6 Fehlerbehandlung in embedded SQL
- 3.2.5.6.1 Fehlerbehandlung über SQLCODE
- 3.2.5.6.2 Fehlerbehandlung über SQLSTATE
- 3.2.5.6.3 IBM Information Center – SQLSTATEs und SQLCODEs
- 3.2.5.7 Statisches SQL ohne Cursor
- 3.2.5.7.1 SQL-Befehl SET
- 3.2.5.7.1.1 Verwendung von SPECIAL REGISTERs
- 3.2.5.7.1.2 Berechnung von Zeitdifferenzen
- 3.2.5.7.1.3 Verwendung von SQL-Prädikaten
- 3.2.5.7.1.4 Verwendung von SQL-skalaren Funktionen
- 3.2.5.7.2 Massendatenverarbeitung
- 3.2.5.7.3 Einzelsatz-Verarbeitung
- 3.2.5.7.3.1 SQL-Befehl SET in Verbindung mit SELECT-Anweisung
- 3.2.5.7.3.2 SQL-Befehl SELECT … INTO
- 3.2.5.7.3.3 SQL-Befehl VALUES … INTO
- 3.2.5.8 Dynamisches SQL ohne Cursor
- 3.2.5.8.1 SQL-Befehl EXECUTE IMMEDIATE
- 3.2.5.8.2 SQL-Befehle PREPARE und EXECUTE
- 3.2.5.8.1.1 SQL-Befehl PREPARE
- 3.2.5.8.1.2 SQL-Befehl EXECUTE
- 3.2.5.8.1.3 Dynamisches SQL mit PREPARE und EXECUTE – ein Beispiel
- 3.2.5.9 SQL-Befehl VALUES … INTO in dynamischem SQL
- 3.2.5.10 Definition und Verwendung der Cursors
- 3.2.5.10.1 SQL-Befehl DECLARE CURSOR
- 3.2.5.10.1.1 SQL-Befehl DECLARE CURSOR für serielle Cursor
- 3.2.5.10.1.2 SQL-Befehl DECLARE CURSOR für Scroll („rollende“) Cursor
- 3.2.5.10.1.3 SQL-Befehl DECLARE CUSROR und Commitment-Steuerung
- 3.2.5.10.1.4 SQL-Befehl SELECT in Verbindung mit Cursor-Deklarationen
- 3.2.5.11 SQL-Befehl OPEN Cursor
- 3.2.5.12 SQL-Befehl FETCH – Zeilen/Datensätze einlesen
- 3.2.5.12.1 SQL-Befehl FETCH mit seriellem Cursor
- 3.2.5.12.2 SQL-Befehl FETCH mit Scroll Cursor
- 3.2.5.13 SQL-Befehl CLOSE Cursor
- 3.2.5.14 Statisches SQL mit Cursor-Verarbeitung – ein Beispiel
- 3.2.5.15 Fortschreiben von Datensätzen bei Cursor-Verarbeitung
- 3.2.5.16 Multiple Row Fetches – Einlesen von Datenblöcken
- 3.2.5.17 Dynamisches SQL mit Cursor
- 3.2.5.17.1 Dynamisches SQL mit fixer Auswahlliste
- 3.2.5.17.1.1 SQL-Befehl PREPARE mit dynamischen SELECT-Statements
- 3.2.5.17.1.2 SQL-Befehl DECLARE CURSOR für dynamisches SQL
- 3.2.5.17.1.3 Dynamisches SQL mit fixer Auswahlliste – Beispiel
- 3.2.5.17.1.4 Parameter-Marker – Verwendung von Variablen in dynamischem SQL
- 3.2.5.17.1.4.1 SQL-Befehl OPEN CURSOR in Verbindung mit Parameter-Markern
- 3.2.5.17.1.4.2 Parameter-Marker in dynamischer Cursor-Verarbeitung – Beispiel
- 3.2.5.17.1.5 Dynamisches SQL mit fixer Auswahlliste oder statisches SQL?
- 3.2.5.17.2 Dynamisches SQL mit variabler Auswahlliste
- 3.2.5.17.2.1 SQL Descriptor Area (SQLDA)
- 3.2.5.17.2.2 SQL-Befehl DESCRIBE – Zuweisung der SQL Descriptor Area
- 3.2.5.17.2.3 SQL-Befehl PREPARE in Verbindung mit SQL Descriptor Area
- 3.2.5.17.2.4 SQL-Befehl FETCH in Verbindung mit SQL Descriptor Area
- 3.2.5.17.2.5 Dynamisches SQL mit flexibler Auswahlliste – Beispiel
- 3.2.5.18 Verarbeitung von Result Sets aus Stored Procedures
- 3.2.5.18.1 Host-Variablen mit Datentyp RESULT_SET_LOCATOR
- 3.2.5.18.2 SQL-Befehl CALL – Aufruf von Stored Procedures
- 3.2.5.18.3 SQL-Befehl ASSOCIATE LOCATORS – Zuordnen von Result-Sets
- 3.2.5.18.4 SQL-Befehl ALLOCATE CURSOR – Result-Set öffnen
- 3.2.5.18.5 SQL-Befehl FETCH – Verarbeiten von Result-Sets aus Procedures
- 3.2.5.18.6 SQL-Befehl CLOSE CURSOR für Result-Set
- 3.2.5.18.7 Verarbeiten von Result-Sets aus Stored Procedures – Beispiel
- 3.2.5.19 Diagnostics Area – SQL-Befehl GET DIAGNOSTICS
- 3.2.5.19.1 Ermitteln von Statement- und Connection-Informationen
- 3.2.5.19.2 Ermitteln von Bedingungsinformationen
- 3.2.6 RPG und Daten
- 3.2.6.1 Daten einer Datei mit RPG lesen
- 3.2.6.1.1 READ – Lesen eines Datensatzes
- 3.2.6.1.2 READE – Lesen eines Datensatzes
- 3.2.6.1.3 CHAIN – Positionieren und Lesen eines Datensatzes
- 3.2.6.2 Schlüsseldefinitionen in RPG
- 3.2.6.2.1 KLIST/kfld
- 3.2.6.2.2 Schlüsseldatenstrukturen
- 3.2.7 Datenmanipulation mit RPG
- 3.2.7.1 Hinzufügen von neuen Datensätzen mit RPG nativ
- 3.2.7.2 Hinzufügen von neuen Datensätzen mit RPG und embedded SQL
- 3.2.7.3 Löschen bestehender Datensätze mit RPG nativ
- 3.2.7.4 Löschen bestehender Datensätze mit RPG und embedded SQL
- 3.2.7.5 Verändern bestehender Datensätze mit RPG nativ
- 3.2.7.6 Verändern bestehender Datensätze mit embedded SQL
- 3.2.8 Built-in Functions
- 3.2.8.1 Umwandlung vom dezimalen Zeichenformat in Character
- 3.2.8.2 Umwandlung von Zeichenfeldern in gepackte dezimale Daten
- 3.2.8.3 Teilzeichenfolgen (Substrings)
- 3.2.8.4 Ersetzen von Zeichenfolgen
- 3.2.8.5 Suchen und Ersetzen von Zeichenfolgen
- 3.2.8.6 Verknüpfen von Zeichenketten und Entfernen von Leerstellen
- 3.2.8.7 Umwandlung von Zeichen in Integer-Format
- 3.2.8.8 Ermitteln von Größe, Länge und Dezimalstellen
- 3.2.8.9 Anzahl der Elemente
- 3.2.8.10 Suchfunktionen
- 3.2.8.11 Zeichenfolgen umsetzen
- 3.2.8.12 Kombinieren von Built-in Functions
- 3.2.8.13 Datums- und Zeitoperanten
- 3.2.8.14 Rechnen mit Datum und Zeit
- 3.3 COBOL
- 3.3.1 CL – Control Language (Steuersprache)
- 3.3.2 CL – Neuerungen V5R2
- 3.3.3 CL – Neuerungen V5R3
- 3.3.3.1 Neue Typen von Variablen
- 3.3.3.2 Deklaration und Verarbeitung von Dateien
- 3.3.3.3 Strukturbefehle im CL
- 3.3.3.4 Die neuen CL-Befehle in einem Musterprogramm
- 3.3.3.5 Informationen aus der Umwandlungsliste.
- 3.3.4 CL – Neuerungen V5R4
- 3.3.4.1 Erweiterungen in der DCL-Anweisung
- 3.3.4.2 Definition von Datenstrukturen
- 3.3.4.3 Pointer Variablen und Pointer-Arithmetik im CL
- 3.3.4.4 Subroutinen im CL
- 3.3.4.5 Declare Processing Options
- 3.3.4.6 Abschluss
- 3.3.5 CL – Neuerungen in V6R1
- 3.3.5.1 INCLUDE
- 3.3.5.2 DCLPRCOPT
- 3.3.5.3 CLOSE
- 3.4 API – Begriffsdefinition
- 3.4.1 API – Suchen und Finden
- 3.4.2 Kommunikation mit APIs
- 3.4.3 Die Bibliothek QSYSINC
- 3.4.4 Der Aufruf von APIs
- 3.4.5 Datentypen bei der Verwendung von APIs
- 3.4.6 Der optionale Parameter „Error-Code“
- 3.4.7 API QUSLFLD
- 3.4.7.1 APIs für User Spaces
- 3.4.7.2 Gemeinsame Datenstrukturen von List APIs im User Space
- 4 Anwendungsmodernisierung
- 4.1 Anwendungsentwicklung und System i
- 4.1.1 Welche Fehler häufig in Bezug auf Anwendungsmodernisierung gemacht werden
- 4.1.2 Formen der Umstellung
- 4.1.2.1 Zielszenario: Ersetzen des Altsystems
- 4.1.2.2 Umsetzen des Altsystems
- 4.1.3 Planung einer modernen Anwendung
- 4.2 Die Beispielanwendung
- 4.3 Das Kapitel wird überarbeitet.
- 4.4 Das Kapitel wird überarbeitet.
- 4.5 Das Kapitel wird überarbeitet.
- 4.6 Das Kapitel wird überarbeitet.
- 4.7 Das Kapitel wird überarbeitet.
- 4.8 Entwicklung eines dynamischen Webprojekts
- 4.8.1 Website-Designer
- 4.8.1.1 Verwendung von Schablonen
- 4.8.2 Dynamischer Seiteninhalt
- 4.8.2.1 Verwendung von Beans
- 4.9 Java und RPG
- 4.9.1 Starten und Beenden der JVM
- 4.9.2 Das JNI-Service-Programm QJVAJNI
- 4.9.3 Garbage Collection
- 4.10 Das Kapitel wird überarbeitet.
- 4.11 RPG und Excel
- 4.11.1 Erstellen von Excel-Arbeitsblättern unter Verwendung
von Apache POI - 4.11.1.1 Dokumentation für Apache POI?/?JavaDocs
- 4.11.1.2 Installieren von POI
- 4.11.2 Allgemeiner Code für die Java- und Excel-Integration
in RPG - 4.11.2.1 Grundsätzliche Funktionen zum Einsatz von Excel mit RPG
- 4.11.2.2 Konstanten
- 4.11.3 Excel-Komponenten
- 4.11.3.1 Die Arbeitsmappe
- 4.11.3.2 Das Arbeitsblatt
- 4.11.3.3 Die Zeile
- 4.11.3.4 Zellen
- 4.11.4 Zuweisung eines Zeichenwertes zu einer Zelle
- 4.11.4.1 Zuweisung eines numerischen Wertes zu einer Zelle
- 4.11.4.2 Zuweisung eines numerischen Wertes zu einer Zelle
- 4.11.5 Speichern des Arbeitsblattes
- 4.11.5.1 FileOutputStream
- 4.11.6 Excel – optische Aufbereitung
- 4.11.6.1 Schriftarten und Farben
- 4.11.6.2 Zelldefinitionen
- 4.11.6.3 Excel-Darstellung im RPG-Programm
- 5 Web-Programmierung
- 5.1 RPG und Webanwendungen
- 5.1.1 HTML und System i
- 5.1.1.1 Allgemeine Angaben für den einfachen HTML-Export
- 5.1.1.2 HTML-Export unter Verwendung einer HTML-Schablone
- 5.1.2 Ferne Befehle
- 5.1.2.1 Ferne Befehle und RPG
- 5.2 Programmieren mit PHP
- 5.2.1 PHP on System i – Zend Core und Zend Platform
- 5.2.1.1 Download
- 5.2.1.2 Voraussetzungen i5/OS
- 5.2.1.3 PTFs
- 5.2.1.4 Ressourcen erstellen
- 5.2.1.5 Sicherungsdateien erstellen
- 5.2.1.6 Zend Core-Dateien entpacken
- 5.2.1.7 Zend-Objekte zum System i übertragen
- 5.2.1.8 Installation von Zend Core
- 5.2.1.9 Jobs im i5/OS
- 5.2.1.10 Funktionstest
- 5.2.1.11 Die Zend Core-Umgebung
- 5.2.1.12 Zend Platform installieren
- 5.2.2 PHP – Grundsyntax
- 5.2.2.1 Ein erster Schritt
- 5.2.2.2 Form und Stil
- 5.2.2.3 Datenbankzugriffe mit PHP
- 5.2.2.3.1 Die Aufgabe
- 5.2.2.3.1.1 PHP-Syntaxelemente
- 5.2.2.3.1.2 Variablen
- 5.2.2.3.1.3 Wertzuweisungen
- 5.2.2.3.1.4 Schleifen
- 5.2.2.3.2 Benötigte PHP-Funktionen
- 5.2.2.3.2.1 odbc_connect()
- 5.2.2.3.2.2 odbc_do() / odbc_exec()
- 5.2.2.3.2.3 odbc_fetch_row()
- 5.2.2.3.2.4 odbc_result()
- 5.2.2.3.2.5 odbc_close()
- 5.2.2.3.3 Das dokumentierte Script
- 5.2.2.3.4 Das undokumentierte Script
- 5.2.2.3.5 Die Ausgabe des Scripts
- 5.2.3 PHP und i5/OS-Befehle
- 5.2.3.1 runQry mit PHP? runQry mit PHP!
- 5.2.3.1.1 Vorbereitende Gedanken
- 5.2.3.1.2 Empfohlenes Vorwissen
- 5.2.3.1.3 Aufruf einer vorhandenen Abfrage
- 5.2.3.1.4 Datensätze auslesen (native)
- 5.2.3.1.5 HTML-Tabelle aus Datensätzen generieren
- 5.2.3.1.6 Restrukturierung und die ersten Klassen
- 5.2.3.1.7 Ein Webfrontend für den Query-Aufruf
- 5.2.3.1.8 Liste aller Queries in einer Bibliothek
- 5.2.3.1.9 Webfrontend mit Assistenten ausstatten.
- 5.2.3.1.10 Anzeigen von Bibliotheken, die Queries enthalten
- 5.2.3.1.11 Anzeigen der Abfragen in einer Bibliothek
- 5.2.3.1.12 Übernahme der Assistenten-Daten in den Befehlsprompt
- 5.2.4 DB2-Funktionen
- 5.2.4.1 Die Aufgabe
- 5.2.4.2 Benötigte DB2-Funktionen
- 5.2.4.2.1 Db2_connect()
- 5.2.4.2.2 db2_exec()
- 5.2.4.2.3 db2_fetch_row()
- 5.2.4.2.4 db2_result()
- 5.2.4.2.5 db2_close()
- 5.2.4.3 Das Script SVKLST00.PHP
- 5.2.5 Dialoge erstellen
- 5.2.5.1 Die Aufgabe
- 5.2.5.2 Exkurs: HTML-Formulare
- 5.2.5.2.1 Formularelemente
- 5.2.5.2.1.1 Einzeilige Eingabefelder
- 5.2.5.2.1.2 Radio Buttons
- 5.2.5.2.1.3 Submit- und Reset-Buttons
- 5.2.5.2.2 Das Suchformular: suchesvklst00.php
- 5.2.5.3 PHP: Parameterübergaben
- 5.2.5.3.1 Modifikation in „svklst00.php“
- 5.2.5.3.2 Script SVKLST00.PHP – V1.4
- 5.2.5.4 Ein anderer Lösungsansatz
- 5.2.5.5 Script SVKLST01.PHP – V1.0
- 5.2.5.6 Optimierungen 1
- 5.2.5.7 Exkurs Javascript
- 5.2.5.7.1 Einbettung
- 5.2.5.8 Funktionen
- 5.2.5.9 Optimierungen 2
- 5.2.5.10 Optimierungen 3
- 5.2.5.11 Optimierungen 4
- 5.2.5.12 Das Script SVKLST01.PHP – V1.1
- 5.2.5.13 Optimierungen 5: Ordnung schaffen
- 5.2.5.13.1 Das Script SVKLMASTER.PHP – V1.0
- 5.2.5.13.2 Das Script SVKLDISPLAY.PHP – V1.0
- 5.2.5.13.3 Das Script SVKLDBACCESS.PHP – V1.0
- 5.2.5.14 PHP-Funktionen einsetzen
- 5.2.5.14.1 PHP Funktionen
- 5.2.5.14.2 Parameter
- 5.2.5.14.3 Gültigkeit von Variablen
- 5.2.5.14.4 Rückgabewerte
- 5.2.5.14.5 Optionale Parameter
- 5.2.5.15 Datenbankzugriffsfunktionen erstellen
- 5.2.5.15.1 Die Funktion ConnectToDB2()
- 5.2.5.15.2 Die Funktion ExecuteDB2Sql()
- 5.2.5.15.3 Die Funktion DisplayDB2ResultSet()
- 5.2.5.15.4 Die Funktion CloseDB2Connection()
- 5.2.5.15.5 Das Script SVKLDBACCESS.PHP V1.1
- 5.2.5.15.6 Das Script db2functions.php
- 5.2.5.16 Das Formular optimieren
- 5.2.5.16.1 Exkurs: Was ist OOP?
- 5.2.5.16.2 Methoden
- 5.2.5.16.3 Eigenschaften
- 5.2.5.16.4 Klassen und Vererbung
- 5.2.5.16.5 Klassen erstellen
- 5.2.5.16.6 Aufruf der Klasse
- 5.2.5.16.7 Das Script: InputElementField.php
- 5.2.5.16.8 Das Script: InputElementRadiobutton.php
- 5.2.5.16.9 Das Script: InputElementButton.php
- 5.2.5.17 Stored Procedures einsetzen
- 5.2.5.17.1 Datenbankzugriff
- 5.2.5.17.2 Aufruf der Stored Procedures
- 5.2.5.17.3 Programmaufrufe mit Stored Procedures
- 5.2.5.17.3.1 Die Aufgabe
- 5.2.5.17.3.1.1 Grafischer Link
- 5.2.5.17.3.1.2 External Stored Procedure aufrufen
- 5.2.5.17.3.1.3 Die External Stored Procedure
- 5.2.5.18 Zend API für i5/OS
- 5.2.5.18.1 i5/OS Programmaufrufe
- 5.2.5.18.1.1 Die Aufgabe
- 5.2.5.18.1.2 Das Script svkldetailPC.php
- 5.2.5.18.1.3 Das Script svklPreDetail.php
- 5.2.5.18.1.3.1 Die Funktion i5_connect
- 5.2.5.18.1.3.2 Die Funktion i5_program_prepare
- 5.2.5.18.1.3.3 Die Funktion i5_program_call
- 5.2.5.18.1.3.4 Die Funktion i5_close
- 5.2.5.18.1.3.5 Mit PCML arbeiten
- 5.2.5.18.1.4 Das Script svklDisplayPC.php
- 5.2.5.18.1.5 Das Script svklPostDetail.php
- 5.2.5.19 PHP und Opensource
- 5.2.5.19.1 Menüs mit CoolJs generieren
- 5.2.5.19.2 Die Installation von MySQL
- 5.2.5.19.2.1 Download MySQL
- 5.2.5.19.2.2 Benutzerprofil erstellen
- 5.2.5.19.1.3 Installationsdateien entpacken
- 5.2.5.19.2.4 Entpackte Dateien auf das System i kopieren
- 5.2.5.19.2.5 PASE-Terminal öffnen
- 5.2.5.19.2.6 Tar-File entpacken
- 5.2.5.19.2.7 Logischen Link erstellen
- 5.2.5.19.2.8 Installationsscript ausführen
- 5.2.5.19.2.9 MySQL Probestarten
- 5.2.5.19.3 MySQL produktiv nutzen
- 5.2.5.19.3.1 Jobwarteschlange MySQL
- 5.2.5.19.3.2 Ausgabewarteschlange MySQL
- 5.2.5.19.2.3 Jobbeschreibung MySQL
- 5.2.5.19.3.4 Jobklasse MySQL
- 5.2.5.19.3.5 Subsystem MySQL
- 5.2.5.19.3.6 Start des MySQL-Servers
- 5.2.5.19.3.7 Beendigung des MySQL-Servers
- 5.2.5.19.3.8 Administration
- 5.2.5.19.4 Mediawiki installieren
- 5.2.5.19.5 SugarCRM installieren
- 5.2.5.19.5.1 Voraussetzungen:
- 5.2.5.19.5.2 Installation
- 5.2.5.19.5.3 SugarCRM aufrufen
- 5.2.5.19.5.4 Anfangskonfiguration
- 5.3 Das Kapitel wird überarbeitet.
- 5.4 Das Kapitel wird überarbeitet.
- 5.5 Web-Anwendungen auf dem HTTP-Server
- 5.5.1 HTTP-Server-Konfiguration
- 5.5.2 CGI-Anwendungen
- 5.5.3 Integrierte Web Services
- 5.5.3.1 Vergabe eines Server-Namens für Web Services
- 5.5.3.2 Angabe der Benutzer-ID
- 5.5.3.3 Deployen eines RPG-Programms als Web Service
- 5.5.3.4 Details zum IBM i-Programm
- 5.5.3.5 Namensvergabe für den Web Service
- 5.5.3.6 Auswahl der Exportprozeduren
- 5.5.3.7 Angabe der Benutzer-ID
- 5.5.3.8 Angabe der Bibliotheksliste
- 5.5.3.9 Zusammenfassung
- 5.5.4 Verwaltung der definierten Web Services
- 5.5.5 Node JS und System i
- 5.5.6 REST-Webservices
- 5.5.6.1 Verwalten von REST-Webservices
- 5.5.6.2 REST-Webservice definieren
- 5.5.6.3 REST-Webservice testen
- 5.5.6.4 REST-Serviceprogramm Kundenstamm
- 5.5.6.4.1 Installation des Webservices
- 5.5.6.4.2 Webservice Kunden löschen
- 5.5.6.4.3 Webservice Kunden-Update
- 5.5.6.4.4 Webservice Kunde erstellen
- 5.5.6.4.5 Webservice Kundenabfrage einzeln
- 5.5.6.4.6 Webservice Kundenabfrage gesamt
- 5.5.7 SOAP Webservices
- 5.5.7.1 Details zum IBM-i-Programm
- 5.5.7.2 SOAP Webservice erstellen
- 5.5.7.2.1 Namensvergabe für den Webservice
- 5.5.7.2.2 Auswahl der Exportprozeduren
- 5.5.7.2.3 Angabe der Benutzer-ID
- 5.5.7.2.4 Angabe der Bibliotheksliste
- 5.5.7.2.5 Zusammenfassung
- 5.5.7.3 Verwaltung der definierten Webservices
- Das Kapitel 6 wird derzeit komplett überarbeitet
- 7 SQL und Datenbank
- 7.1 System i DB2 Universal Database (UDB)
- 7.1.1 Datenbank-Limits DB2 UDB Release V5R4
- 7.2 Das Datenbank-Design
- 7.2.1 Situationsbeschreibung „Auftragsverwaltung“
- 7.2.2 Die Systemanalyse
- 7.2.2.1 Die Analyse-Methode „Structured Analysis“
- 7.2.2.1.1 Datenfluss-Analyse der „Auftragsverwaltung“
- 7.2.2.1.2 Data Dictionary „Auftragsverwaltung“
- 7.2.3 Die Datenbank-Beschreibung
- 7.2.3.1 Begriffsdefinition
- 7.2.3.2 Der Datenbank-Entwurf
- 7.2.3.2.1 Die Normalisierung der Datenbank
- 7.2.3.2.2 Die Relationenbeziehungen
- 7.2.3.2.3 ANSI-SPARC-3 Schichtenmodell
- 7.2.3.2.4 Schlüsseltabellen
- 7.2.3.2.5 Rollenmodellierung
- 7.2.3.2.6 Spezifische Attribute
- 7.2.4 Das physische Datenbankkonzept
- 7.2.4.1 Datenbankintegrität
- 7.2.4.1.1 Entitätsintegrität
- 7.2.4.1.2 Domänenintegrität
- 7.2.4.1.3 Referentielle Datenintegrität
- 7.2.4.1.3.1 Definition einer referentiellen Integritätsbedingung
- 7.2.4.1.3.2 Überprüfung referentieller Integritätsbedingungen
- 7.2.4.1.3.3 Allgemeine Überlegungen zur Implementierung
- 7.2.4.1.3.4 Überlegungen zur Performance
- 7.2.4.2 Datenbankrelationen analysieren
- 7.2.4.2.1 Der Befehl „Display database relation (DSPDBR)“
- 7.2.4.2.2 Database Navigator-Masken einsetzen
- 7.3 Data Definition Language (DDL)
- 7.3.1 Relationale iSeries-Datenbanken
- 7.3.2 Schemata
- 7.3.2.1 Systemschemata
- 7.3.2.2 Benutzerschemata erstellen
- 7.3.3 SQL-Tabellen
- 7.3.3.1 Der Befehl CREATE TABLE
- 7.3.3.2 Tabellen- und Spaltennamen
- 7.3.3.3 SQL-Datentypen
- 7.3.3.3.1 Zeichen speichern
- 7.3.3.3.2 Temporale Daten speichern
- 7.3.3.3.3 Ziffern speichern
- 7.3.3.3.4 DATALINK-Spalten
- 7.3.3.3.5 Benutzerdefinierte Datentypen
- 7.3.3.3.6 Identity-Spalten
- 7.3.3.3.6.1 ROWID-Spalten
- 7.3.3.3.6.2 Die Klausel AS IDENTITY
- 7.3.3.3.6.3 SEQUENZ-Objekte
- 7.3.3.4 ALTER TABLE – Änderung Ihrer Tabellen
- 7.3.3.5 COMMENT ON – Dokumentation Ihrer Datenbank
- 7.3.3.6 CREATE VIEW – logische SQL-Sichten erstellen
- 7.3.3.7 CREATE Alias – Alias-Namen erstellen
- 7.3.3.8 Der DB2 UDB for iSeries Datenbankkatalog
- 7.3.4 Integritätsbedingungen
- 7.3.4.1 UNIQUE Constraints
- 7.3.4.2 Primärschlüssel-Constraints
- 7.3.4.3 Fremdschlüssel
- 7.3.4.4 Check Constraints
- 7.3.5 SQL-INDIZES
- 7.3.5.1 Der Binary Radix Tree Index
- 7.3.5.2 Binärindexerstellung
- 7.3.5.3 Der Encoded Vector Index (EVI)
- 7.3.5.4 EVI-Index – Erstellung und Pflege
- 7.3.5.5 Maintained Temporary Index (MTI)
- 7.3.5.6 Abgeleitete Indizes Release V6R1
- 7.3.6 SQL-INDIZES – Einsatz und Wirkung
- 7.3.6.1 Das Optimierungsziel
- 7.3.6.2 Single Table Optimierung
- 7.3.6.3 Encoded Vector Index (EVI)
- 7.3.6.4 Index Access Only
- 7.3.6.5 Tabellenverknüpfungen und Indizes
- 7.3.6.6 Gruppierungen und Indizes
- 7.3.6.7 Sortierungen und Indizes
- 7.3.6.8 Warum werden meine Indizes ignoriert?
- 7.3.6.9 Überprüfung der Indexstrategie
- 7.3.7 Materialized Query Tables – Einsatz und Wirkung
- 7.3.7.1 MQTs erstellen
- 7.3.7.2 Systemvorbereitungen für den MQT-Einsatz
- 7.3.7.3 Lohnt sich der Einsatz von MQTs?
- 7.3.7.4 Bestehende Tabellen als MQTs nutzen
- 7.3.8 Der OmniFind Text Search Server für DB2
- 7.3.8.1 Installation
- 7.3.8.2 OmniFind Starten und Stoppen
- 7.3.8.3 Der OmniFind-Textsuchindex
- 7.3.8.4 Unterstützte Datentypen des Textsuchindexes
- 7.3.8.5 OmniFind-Verwaltungs-Tools
- 7.3.8.6 OmniFind-Suchoperatoren
- 7.3.8.7 Suche mit Synonymen
- 7.3.8.8 Daten aus dem IFS für die OmniFind-Suche einbinden
- 7.3.8.9 Textsuchgruppen
- 7.3.8.10 Textsuchgruppe für Source Physical Files erstellen
- 7.3.8.11 Textsuchgruppe für Spools erstellen
- 7.3.8.12 Textsuchgruppe für IFS-Dateien erstellen
- 7.3.9 SQL-Objekte und i5/OS-Berechtigungen
- 7.3.9.1 i5/OS-Berechtigungen für SQL-Schemata
- 7.3.9.2 i5/OS-Berechtigungen für SQL-Tabellen
- 7.3.9.5 Zeilen und Spaltenberechtigungen (RCAC)
- 7.3.9.5.1 Zeilen-/Spaltenberechtigungen (RCAC) – Voraussetzungen
- 7.3.9.5.2 Zeilenberechtigung erteilen
- 7.3.9.5.3 Zeilenberechtigungen anzeigen
- 7.3.9.5.4 Spaltenberechtigungen erstellen
- 7.3.9.5.5 Spaltenberechtigungen anzeigen
- 7.3.9.5.6 RCAC-Bedingungen und die SQL-Indexierung
- 7.3.9.5.7 RCAC und Materialized Query Tables (MQT)
- 7.3.9.5.8 Datenbankadministration und RCAC
- 7.3.9.5.9 RCAC in der Programmierung
- 7.3.9.5.10 Sonstige Überlegungen
- 7.3.10 Partitionierte Tabellen
- 7.3.10.1 Wofür werden partitionierte Tabellen benötigt?
- 7.3.10.2 Wie werden partitionierte Tabellen erstellt?
- 7.3.10.3 Der Migrationsprozess
- 7.3.10.4 Indizes und partitionierte Tabellen
- 7.3.10.5 Partitionierte Tabellen und der SQL-Optimizer
- 7.4 Grafische Datenbank-Tools
- 7.4.1 iSeries Navigator
- 7.4.1.1 Mit Datenbanken arbeiten
- 7.4.1.2 Mit Datenbanktabellen arbeiten
- 7.4.1.2.1 Datenbanktabellen über das grafische Interface erstellen
- 7.4.1.2.2 SQL Prozedurumgebung iSeries Navigator
- 7.4.1.2.2.1 SQL-Prozedurumgebung aufrufen
- 7.4.1.2.2.2 JDBC-Schnittstelle konfigurieren
- 7.4.1.2.2.3 SQL-Statement in der Skript-Umgebung ausführen
- 7.4.1.3 Mit Integritätsbedingungen arbeiten
- 7.4.1.4 Mit Statistikdaten arbeiten
- 7.4.2 Visual Explain
- 7.4.2.1 Toolbar und Menüoptionen
- 7.4.2.2 Visual Explain Abfrageattribute und Werte
- 7.4.3 SQL Performance Monitor
- 7.4.3.1 Detailed SQL Performance Monitor starten
- 7.4.3.2 Leistungsanalyse Detailmonitor
- 7.4.3.3 Summary Performance-Monitor starten
- 7.4.4 Der Plan Cache
- 7.4.4.1 Snapshot des SQL Plan Cache
- 7.4.5 Die SQL Workbench/J – Eine Alternative zum System i Navigator?
- 7.4.5.1 Download und Installation der SQL Workbench/J
- 7.4.5.2 Konfiguration des JDBC-Treibers
- 7.4.5.3 Konfiguration der Verbindungsprofile
- 7.4.5.4 SQL Workbench/J – Ein Überblick der Skriptumgebung
- 7.4.5.4.1 SQL Skriptumgebung – Variablen deklarieren
- 7.4.5.4.2 SQL Skriptumgebung – Arbeiten mit BLOB-Daten
- 7.4.5.4.3 SQL Skriptumgebung – Daten im Result Set verändern
- 7.4.5.4.4 SQL Skriptumgebung – Komfortable Skript-Funktionen
- 7.4.5.5 Die SQL Workbench/J – Datenbank-Explorer
- 7.4.6 Eclipse Datenbank-Tools
- 7.4.6.1 Erstellen eines Verbindungsprofils
- 7.4.6.2 Arbeiten mit SQL
- 7.4.6.2.1 Erstellen eines Filters
- 7.4.6.3 SQL-Erstellungsprogramm
- 7.4.7 RDI und die SQL-Objekterstellung
- 7.4.7.1 Kompilierbefehle für Quellenteildateien erstellen
- 7.4.7.2 Benutzeraktionen für IFS-Teildateien erstellen
- 7.5 Interfaces für die SQL-Ausführung
- 7.5.1 Der Befehl RUNSQLSTM
- 7.5.2 Der Befehl RUNSQL
- 7.5.5 Der Query Manager
- 7.5.5.1 Query Manager – Benutzerprofile
- 7.5.5.2 Querymanager – QM-Abfragen erstellen (menügeführt)
- 7.5.5.3 Querymanager – SQL-Abfragen erstellen und ausführen
- 7.5.5.4 Querymanager Formulare (*QMFORM) – einfache Berichte
- 7.5.5.5 Query Manager–Formulare (*QMFORM) – Gruppenwechsel
- 7.5.5.6 Query Manager-Abfragen parametrisieren
- 7.5.5.7 Query/400 (*QMQRY) konvertieren
- 7.5.5.8 Query Manager – Mit Tabellen arbeiten
- 7.6 SQL-Data Manipulation Language (DML)
- 7.6.1 Abfragen mit SELECT
- 7.6.1.1 Spaltenauswahl
- 7.6.1.2 Daten selektieren
- 7.6.1.2.1 Reguläre Ausdrücke verwenden
- 7.6.1.3 SQL-Spaltenfunktionen
- 7.6.1.3.1 Aggregatfunktionen
- 7.6.1.3.2 Skalare Funktionen
- 7.6.1.4 Daten gruppieren
- 7.6.1.4.1 Daten gruppieren – HAVING
- 7.6.1.5 Daten sortieren
- 7.6.2 Wie wird ein SQL-Statement eigentlich verarbeitet?
- 7.6.3 Tabellenverknüpfungen (JOIN)
- 7.6.3.1 INNER JOIN
- 7.6.3.1.1 INNER JOIN mit mehr als zwei Tabellen
- 7.6.3.1.2 Die USING-Klausel V5R3
- 7.6.3.1.3 Kreuzprodukt – Cross Join
- 7.6.3.2 OUTER JOIN
- 7.6.3.3 EXCEPTION-JOIN
- 7.6.3.4 FULL OUTER JOIN
- 7.6.3.5 Self JOIN
- 7.6.3.6 Non-Equi-Joins
- 7.6.4 Vertikale Verknüpfungen – der Operator UNION
- 7.6.5 Der Einsatz von Unterabfragen
- 7.6.5.1 Skalare Unterabfrage – eine zurückgegebene Zelle
- 7.6.5.2 Temporäre Spalten und temporäre Tabellen erstellen
- 7.6.5.3 Common Table Expressions (CTE)
- 7.6.5.4 Korrelierende Unterabfragen
- 7.6.5.5 Die Prädikate EXISTS, ALL, ANY oder SOME
- 7.6.6 SQL-Funktionen im praktischen Einsatz
- 7.6.6.1 Mit Datum und Uhrzeit arbeiten
- 7.6.6.2 DAYOFWEEK, DAYNAME und Fallunterscheidungen
- 7.6.6.2.1 CASE-Funktion und Pivot-Tabellen
- 7.6.6.3 Jahreszahl, Monatsname, Kalenderwoche …
- 7.6.6.4 Auswertungen erstellen: Datumsdifferenzen und CTE
- 7.6.6.5 Die Funktionen LAST_DAY, NEXT_DAY und ADD_MONTHS
- 7.6.6.6 Logische Funktionen, Konvertierungs- und Zeichenkettenfunktionen
- 7.6.6.7 Datenverschlüsselung
- 7.6.6.8 ROW_NUMBER(), RANK() und DENSE_RANK() – Release V5R4
- 7.6.6.9 Mehrdimensionale Gruppierungen – Release i6.1
- 7.6.6.10 Skalare Funktionen mit regulären Ausdrücken
- 7.6.8 Rekursive SQL-Aufrufe
- 7.6.8.1 Wechselseitige Rekursionen
- 7.6.8.2 Rekursive SQL-Aufrufe – CONNECT BY
- 7.6.8.3 Optimierung rekursiver SQL-Aufrufe
- 7.6.10 Datensätze einfügen – Die Anweisung INSERT
- 7.6.10.1 INSERT INTO – Spaltenwerte
- 7.6.11 Datensätze aktualisieren – Die Anweisung UPDATE
- 7.6.11.1 Bedingte Datenaktualisierungen
- 7.6.12 Datensätze löschen – Die Anweisung DELETE
- 7.7 Prozeduren
- 7.7.1 Prozeduren mit dem System i Navigator erstellen
- 7.7.2 Die Anweisung CREATE PROCEDURE
- 7.7.3 Objektadressierung in Prozeduren
- 7.7.4 Prozeduren im Datenbankkatalog verschlüsseln
- 7.7.5 Der Prozeduraufruf
- 7.7.6 Overloading von Prozeduren
- 7.7.7 SQL Control Language
- 7.8 Funktionen
- 7.8.1 Skalare SQL-Funktionen
- 7.8.1.1 Skalare Funktionen mit dem System i Navigator definieren
- 7.8.1.2 Skalare SQL-Funktionen in der Prozedurumgebung erstellen
- 7.8.2 Tabellenfunktionen (UDTF)
- 7.8.3 Pipelined Table Function
- 7.8.4 Abgeleitete Funktionen
- 7.9 Datenbanktrigger
- 7.9.1 Datenbanktrigger – Eigenschaften
- 7.9.2 Datenbanktrigger erstellen – grafisches Interface
- 7.9.3 Datenbanktrigger erstellen – CREATE TRIGGER
- 7.9.4 Triggeradministration
- 7.9.5 Multi-Event-Trigger (i7.1 TR6)
- 7.9.6 Instead-of-Trigger
- 7.10 Fehlerhandling in Prozeduren/Funktionen/Trigger
- 7.10.1 Fehlermeldungen durch die Datenbank
- 7.10.2 Die Anweisung GET DIAGNOSTICS
- 7.10.3 Globale und lokale Fehlerroutinen
- 7.10.4 Benutzerdefinierte Meldungen
- 7.10.4.1 Benutzerdefinierte Meldungen auslösen
- 7.10.6 Transaktionssicherung im SQL-Umfeld
- 7.10.6.1 Transaktionen starten und beenden
- 7.10.6.2 Die verschiedenen Isolationsstufen
- 7.10.6.3 Transaktionen identifizieren
- 8 XML on iSeries
- 8.1 XML-Einführung
- 8.2 XML-Grundlagen
- 8.2.1 XML-Dokumente
- 8.3 IBM i – DB2 for i und XML
- 8.3.1 Datenbank, SQL und XML
- 8.3.1.1 Datentyp XML
- 8.3.1.1.1 XML-Datentyp und embedded SQL
- 8.3.1.1.1.1 Definition von XML-Variablen
- 8.3.1.1.1.2 Definition von XML-Locators
- 8.3.1.1.1.3 Definition von XML-File-Reference-Variablen
- 8.3.1.1.2 Speichern von XML-Dokumenten in SQL-Tabellen
- 8.3.1.1.2.1 Embedded SQL
- 8.3.1.1.2.2 SQL-Funktion GET_XML_FILE()
- 8.3.1.2 Beispielumgebung
- 8.3.1.3 IBM i – DB2 for i und XML
- 8.3.1.4 Erstellen von XML-Dokumenten
- 8.3.1.4.1 Casesensitive XML-Namen
- 8.3.1.4.2 Hierarchische und relationale Darstellung von Daten
- 8.3.1.4.3 XMLELEMENT – Erstellen von XML-Elementen
- 8.3.1.4.4 XMLATTRIBUTES – Attribute
- 8.3.1.4.5 XMLCONCAT – Verknüpfen von XML-Bausteinen
- 8.3.1.4.5.1 Common Table Expressions und XMLCONCAT
- 8.3.1.4.6 XMLFOREST – Auflistung von Elementen
- 8.3.1.4.7 XMLROW – Liste von Elementen mit Root-Element
- 8.3.1.4.8 XML Aggregat-Funktionen
- 8.3.1.4.8.1 XMLAGG – Verknüpfen von XML-Bausteinen über mehrere Zeilen
- 8.3.1.4.8.2 XMLGROUP – Erstellen XML-Dokument
- 8.3.1.4.9 Namensbereiche/Namespaces
- 8.3.1.4.9.1 XMLNAMESPACES() – Definition von Namensbereichen
- 8.3.1.4.9.2 Definition von Elementen mit Namensbereichen (XMLELEMENT)
- 8.3.1.4.9.3 Definition von Elementen mit Namensbereichen (XMLFOREST)
- 8.3.1.5 Verarbeiten von XML-Dokumenten
- 8.3.1.5.1 Annotated Schema Decomposition
- 8.3.1.5.1.1 XML-Schemata
- 8.3.1.5.1.2 XML-Schemata und XML-Schema-Repositories
- 8.3.1.5.1.3 Schema-Erweiterungen für Annotaded Schema Decomposition
- 8.3.1.5.1.4 Stored Procedure XDBDECOMPXML – Auflösen eines XML-Dokuments
- 8.3.1.5.1.5 Übernahme von XML-Daten direkt in Datenbanken und Tabellen
- 8.3.1.5.2 Tabellenfunktion XMLTABLE
- 8.3.1.5.2.1 XPATH
- 8.3.1.5.2.2 Tabellenfunktion XMLTABLE-Syntax
- 8.3.1.5.2.3 XML-Dokument für Beispiele
- 8.3.1.5.2.4 Zugriff auf XML-Elemente in einer SQL-Tabelle
- 8.3.1.5.2.5 Ermitteln von Daten aus XML-Elementen auf gleicher Ebene
- 8.3.1.5.2.6 Ermitteln von Daten aus XML-Elementen auf unterschiedlichen Ebenen
- 8.3.1.5.2.7 Setzen von Default-Werten
- 8.3.1.5.2.8 Tabellenfunktion XMLTABLE
- 8.3.1.5.2.9 Ermitteln von Daten aus mehreren gleichnamigen Elementen
- 8.3.1.5.2.10 Verwendung von Prädikaten zum Filtern von XML-Daten
- 8.3.1.5.2.11 Ermitteln von Daten unter Verwendung von XPath-Funktionen
- 8.3.1.5.3 Namensbereiche
- 8.3.1.5.3.1 XML-Dokument für Beispiele
- 8.3.1.5.3.2 Verarbeitung von XML-Dokumenten ohne Namensbereichsdeklaration
- 8.3.2 XML und RPG
- 8.3.2.1 XML-INTO (Parsen eines XML-Dokuments in eine Variable)
- 8.3.2.1.1 XML-INTO und Namespace
- 8.3.2.4 %XML
- 8.3.3 XML-INTO mit Handler-Prozedur
- 8.3.3.1 Call-Back-Processing
- 8.3.3.2 Handler-Prozedur für XML-INTO
- 8.3.3.3 Verarbeiten von XML-Dokumenten mit XML-INTO und Handler-Prozedur
- 8.3.4 XML-SAX
- 8.3.4.1 XML-Ereignisse/Events
- 8.3.4.2 Handler-Prozedur für XML-SAX
- 8.3.4.3 Debug-Unterstützung für XML-Events/Ereignisse
- 8.3.4.4 Verarbeiten von XML-Dokumenten mit XML-SAX
- 8.4 XML und WDSC
- 8.4.1 Java-Klassen für die XML-Integration
- 8.4.2 SQL in WDSC
- 8.5 XML mit CGIDEV2
- 8.5.1 Installation der Beispieldaten
- 8.5.2 XML-Erstellung aus DB2-Daten