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