INGRES/RBF, Report-Writer und INGRES/VIGRAPH

Inhaltsübersicht

 

INGRES/RBF, Report-Writer und INGRES/VIGRAPH.. 1

5     INGRES/RBF, Report-Writer und INGRES/VIGRAPH.. 1

5.1     Einleitung. 1

5.2     INGRES/RBF. 2

5.3     Report-Writer 2

5.4     INGRES/GRAPHS. 2

Aufgaben. 2

 

          

 

 

5      INGRES/RBF, Report-Writer und INGRES/VIGRAPH

 

 

         In  diesem  Kapitel  werden  zuerst  zwei  INGRES-Komponenten

         dargestellt,  die in  Bezug zu  Listenprogrammen  stehen.  Es

         wird  gezeigt, wie mit Hilfe von IN                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                tenprogramm

         erstellen.

 

         Am  Ende  des  Kapitels  wird  die  INGRES/VIGRAPH-Komponente

         vorgestellt,  mit   der  die   gewünschten  Berichte  in  der

         graphischen Form ausgegeben werden können.

 

Zurück zum Inhaltsverzeichnis

 

 

 

5.1        Einleitung

 

 

         Die  Listenprogramme dienen  zur formatierten  Ausgabe  einer

         Abfrage.  Im   Unterschied  zu   INGRES/QBF,  das   auch  das

         Ändern, Einfügen  und  Löschen  von  Datenwerten  ermöglicht,

         können  INGRES/RBF und  Report-Writer  nur  solche  Programme

         spezifizieren  bzw.   erstellen,  die   für  die   Suche  von

         Datenwerten benutzt werden.

 

         Die Listenprogramme werden bevorzugt, wenn eine Abfrage viele

         Reihen einer  Tabelle enthält  und das  Ergebnis in einer gut

         lesbaren Form im zeitlichen Ablauf ständig benötigt wird. Die

         Ausgabe  einer Liste kann entweder auf einem Drucker, auf dem

         Bildschirm oder in einer Datei erfolgen.

 

         Die  einfachsten   Listenprogramme,   die   erstellt   werden

         können,   werden    Standard-Listenprogramme   genannt.   Die

         Standard-Listenprogramme  können bei  INGRES  mit  INGRES/RBF

         erstellt  werden.  Abbildung  5-1  zeigt  die  Ausgabe  eines

         Standard-Listenprogramms,   das  für   die  Tabelle  arbeiten

         erstellt wurde:

 

 

           Abb. 5-1 Standard-Listenausgabe für die Tabelle arbeiten

 

          Die  Ausgabe eines Standard-Listenprogramms enthält, genauso

          wie  die Ausgabe  jedes Listenprogramms,  eine oder  mehrere

          Ausgabeseiten, von welchen jede folgende Teile beinhaltet:

 

                        - Kopfzeile  (mit Datum und Uhrzeit),

                        - Titel,

                        - Spaltenüberschrift,

                        - Datenwerte         und

                        - Fußzeile (mit Seitenangabe).

 

          Bei einem  Standard-Listenprogramm sind  die  Namen  in  der

          Spaltenüberschrift  identisch   mit  den   Spaltennamen  der

          Tabelle. Die  Reihenfolge dieser  Namen entspricht genau der

          Reihenfolge der Spalten im Tabellenschema.

 

Zurück zum Inhaltsverzeichnis

 

 

5.2        INGRES/RBF

 

 

          Das    INGRES-Subsystem    INGRES/RBF    ("Report-by-Forms")

          ermöglicht  dem   Benutzer,  mit   Hilfe  von   frames   und

          ohne irgendwelche  Programmierkenntnisse, Listenprogramme zu

          spezifizieren.  Das frame  von  INGRES/RBF  hat  sehr  viele

          Ähnlichkeiten   mit  dem   JoinDefs   Catalog-frame.   Diese

          Ähnlichkeit  äußert  sich  sowohl  bei  einigen  Masken  als

          auch  bei der  Funktionalität. INGRES/RBF  kann entweder mit

          Hilfe  der Funktion  Reports im  INGRES/MENU  oder  mit  dem

          Betriebssystemkommando rbf  aufgerufen werden. (Das Kommando

          rbf ist in Kapitel 15 beschrieben.)

 

          Der Aufruf der Funktion Reports im INGRES/MENU erzeugt, bis

          auf  die Titelzeile,  die gleiche Maske wie in der Abbildung

          4-6 angezeigt. Nach der Auswahl der Unterfunktion Create und

          der anschließenden  Eingabe eines  Tabellennamens, erscheint

          die neue Menüleiste mit den folgenden Funktionen:

 

                        - Block Mode,

                        - Column Mode,

                        - Wrap Mode    und

                        - Default Mode,

 

          wobei  jede dieser  Funktionen unterschiedliche Ausgabearten

          von Daten in einer Liste beschreibt.

 

Funktion

Bedeutung

Block Mode      

die Ausgabe  von Datenwerten erscheint rechts neben der entsprechenden Überschrift.

Column Mode     

die Ausgabe erfolgt spaltenweise.  (Falls die Ausgabe  zu lang  ist, wird  sie auf  dem Bildschirm  rechts abgeschnitten  und auf dem Drucker in mehrere Zeilen umgebrochen.)

Wrap Mode       

entspricht dem Column-Modus, wenn die Tabellenspalten in eine Zeile passen. Falls  nicht, wird  die  Ausgabe  automatisch umgebrochen.

Default Mode    

entspricht dem Column-Modus, falls die Ausgabe in eine Zeile paßt, sonst dem Block-Modus.

 

 

          Am  Beispiel der  Tabelle arbeiten  (Abb.  5-2)  werden  wir

          die  Erstellung   der  Listenspezifikation  im  Column-Modus

          durchführen.

                                     Abb. 5-2 Listenspezifikation für die Tabelle arbeiten

 

           Das   Funktionsmenü  in   Abbildung  5-2  enthält  folgende

           Funktionen:

 

Funktion

Bedeutung

Create          

erstellt ein neues Objekt für die Listenspezifikation. Dieses Objekt  kann eine beliebige Überschrift, eine neue bzw. eine leere Zeile usw. sein.

Delete          

löscht ein existierendes Objekt einer Listenspezifikation.

Edit            

editiert ein existierendes Objekt einer Listenspezifikation.

Move            

bewegt ein existierendes Objekt einer Listenspezifikation.

Undo            

hebt die zuletzt  ausgeführte  Operation auf.

Order           

definiert, welche Spalten für die Sortierfolge  und Gruppenbildung verwendet und welche Aggregatfunktionen benutzt werden.

ReportOptions   

definiert das Layot der Liste.

Save            

übersetzt und sichert die Listenspezifikation.

 

 

         Mit der Funktion Save  kann die  in  Abbildung  5-2  gezeigte

         Listenspezifikation  gespeichert  und  anschließend  mit  der

         Funktion Go  ausgeführt werden.  Weil  wir  keine  Änderungen

         an der  Spezifikation  vorgenommen  haben,  wird  daraus  ein

         Standard-Listenprogramm erstellt,  dessen  Ausgabe  Abbildung

         5-1 zeigt.

 

         Die   Funktionen  Edit   und  Move   werden  benötigt,   wenn

         die   Elemente  der  angezeigten  Spezifikation  eine  andere

         Ausgabeform haben  sollen. Diese beiden Funktionen können nur

         einfache Operationen  (wie z.B.  neue Elemente  einfügen bzw.

         existierende Elemente  verschieben) ausführen.  Um komplexere

         Operationen  wie  z.B. Gruppenbildung  durchzuführen, muß die

         Funktion Order (Abb. 5-3) aufgerufen werden.

 

                                                                            

              Abb. 5-3 Order Columns-frame für die Tabelle arbeiten

 

 

          Die  Column  Name-Spalte  zeigt  alle  Spalten  der  Tabelle

          arbeiten  an.   Für  jede  dieser  Tabellenspalten kann  bei

          Sequence  angegeben   werden,  ob   die   Spalte   für   den

          Sortiervorgang  benutzt   (ungleich  0)   wird  oder   nicht

          (=0).  Die Zahlen  1,2,... definieren  die  Reihenfolge  der

          Sortierung,  wobei zuerst  nach  der  Spalte  mit  dem  Wert

          1 sortiert  wird usw.  Die  Direction-Spalte  definiert  die

          aufsteigende  ("a")   bzw.  absteigende   ("d")  Sortierung.

          Die  Break-Spalte   schließlich  kennzeichnet  mit  "y"  die

          Tabellenspalten,  die für  die Gruppenbildung benutzt werden

          sollen.

 

          In Abbildung  5-3  werden  damit  die  Spalten  aufgabe  und

          pr_nr  in dieser  Reihenfolge als Sortierbegriffe verwendet.

          Die  Sortierung  erfolgt  bei  beiden  Spalten  aufsteigend.

          Zusätzlich   werden  die   Werte  der   Spalte  aufgabe  zur

          Gruppenbildung verwendet.

 

          Mit  der Auswahl  der Funktion  Column Options  in der Maske

          Order   Columns  können   die  etwaigen   Aggregatfunktionen

          definiert,  bzw. das Layout einer Gruppenbildung beschrieben

          werden.  Um   die  Funktion  ColumnOptions  für  die  Spalte

          aufgabe (Abb.  5-4) aufzurufen,  muß die Schreibmarke in der

          Maske  Order Columns  auf dieser Spalte positioniert werden.

          Dasselbe gilt für die Spalte m_nr (Abb. 5-5).

 

                         Abb. 5-4 Column Options-frame für die Spalte aufgabe

 

                 Abb. 5-5 Column Options-frame für die Spalte m_nr

 

 

         In Abbildung  5-4 sind  die Eigenschaften  der Spalte aufgabe

         beschrieben.   Weil  diese  Spalte  mit  der  Angabe  Break=y

         definiert   ist,  enthält   ihre  Column  Options-Maske  auch

         die Zeilen,  in  denen  das  Layout  für  die  Gruppenbildung

         beschrieben  ist. Mit  der Angabe b wird definiert, daß jeder

         Datenwert  dieser Spalte  nur am  Anfang jeder Gruppenbildung

         erscheint.   Die  Angabe   1  in   der  nächsten  Maskenzeile

         spezifiziert  die Anzahl  der eingefügten  leeren Zeilen nach

         jeder Gruppenbildung.

 

         Abbildung  5-5  enthält  keine  Angaben  für  Gruppenbildung,

         weil  mit der  Spalte m_nr  keine Gruppenbildung durchgeführt

         wird.  Diese Spalte  wird aber  für die Ausgabe des maximalen

         Datenwertes  nach jeder Gruppenbildung mit der Spalte aufgabe

         benutzt.  Deswegen muß,  in der  Over Break-Spalte und in der

         Maximum-Zeile, das Zeichen "x" gesetzt werden.

 

         Die  Ausgabe der  entsprechenden Liste  (nach dem Sichern und

         der Übersetzung der Listenspezifikation) ist in Abbildung 5-6

         dargestellt.

                     Abb. 5-6 Listenausgabe für die Tabelle arbeiten

 

Zurück zum Inhaltsverzeichnis

 

 

5.3        Report-Writer

 

 

          Im  Unterschied zu  INGRES/RBF, das  für  die  Spezifikation

          eines Listenprogramms keine Programmierkenntnisse erfordert,

          enthält Report-Writer  für die Listenprogrammerstellung eine

          einfache  Programmiersprache.   Ein  mit  dem  Report-Writer

          erstelltes  Listenprogramm   kann   anschließend   mit   dem

          Betriebssystemkommando  sreport  übersetzt  und  danach  mit

          report  ausgeführt  werden.  (Für  die  Beschreibung  beider

          Kommandos siehe Kapitel 15.)

 

          Die  Verwendung der  Programmiersprache  des  Report-Writers

          werden wir an einem Beispiel erläutern.

 

          Beispiel 5.1

 

          .NAME bsp0501

          .LONGREMARK

          Dieses Listenprogramm waehlt Datenwerte der Mitarbeiter aus,

          die in einem  vom Benutzer eingegebenen Jahr  in ihren

          Projekten eingestellt wurden. Alle ausgewaehlten Mitarbeiter

          werden nach Projektnummern gruppiert und zu jeder Gruppe

          wird das frueheste Einstellungsdatum ausgegeben.

          .ENDREMARK

          .OUTPUT b0501.lst

          .QUERY   SELECT pr_nr,arbeiten.m_nr,m_name, einst_dat

                FROM arbeiten, mitarbeiter

                WHERE arbeiten.m_nr = mitarbeiter.m_nr

                AND date_part ('year',einst_dat) = $jahr

          .SORT  pr_nr

          .FORMAT einst_dat(d"01-02-03")

 

          /* Listenkopfbeschreibung */

          .HEADER REPORT

          .NEWLINE  5

          .LEFT  .PRINT "Datum:",current_date (d"February 3 1901")

          .NEWLINE 3

          .UNDERLINE .TAB 20 .PRINT "Einstellungen im Jahre 1988" .NOUNDERLINE

          .NEWLINE 4

          .UNDERLINE .TAB 2  .PRINT "Projektnummer"

                     .TAB 16 .PRINT "Mitarbeiternummer"

                     .TAB 35 .PRINT "Mitarbeitername"

                     .TAB 55 .PRINT "Eingestellt am:"

          .NOUNDERLINE

 

          .FOOTER REPORT

          .NEWLINE 2

          .CENTER .PRINT "Listenende"

          .NEWLINE 1

 

          .HEADER pr_nr

          .NEWLINE 3 .TAB 2 .PRINT "Projektnummer: " .TAB 20 .PRINT pr_nr c(4)

 

          .FOOTER pr_nr

          .NEWLINE   1

          .PRINT "-----------------------------------------------------------"

          .NEWLINE 1

          .TAB 2 .PRINT "Das frueheste Einstellungsdatum ist: ",min(einst_dat)

          .NEWLINE 1

          .PRINT "-----------------------------------------------------------"

          .NEWLINE 1

 

          .DETAIL

          .TAB 2 .PRINT pr_nr  c(4)

          .TAB 16 .PRINT m_nr  n(6)

          .TAB 35 .PRINT m_name c(20)

          .TAB 55 .PRINT einst_dat c(8)

          .NEWLINE 1

 

          Das  Programm   in  Beispiel   5.1  wählt   Datenwerte   der

          Mitarbeiter aus,  die im  Jahr, das vom Benutzer beim Ablauf

          eingegeben wird,  in  ihren  Projekten  eingestellt  wurden.

          Alle  ausgewählten Mitarbeiter  werden  nach  Projektnummern

          gruppiert,  und  zu   jeder   Gruppe   wird   das   früheste

          Einstellungsdatum ausgegeben.

 

          Jede Report-Writer-Anweisung hat zwei Teile: Das Zeichen "."

          als Präfix,  gefolgt von  einem Report-Writer-Schlüsselwort.

          Jedes Schlüsselwort  hat ein  oder mehrere  Kürzel, die  als

          Synonyme benutzt werden können.

 

          Die  Report-Writer-Anweisungen  können  in  mehrere  Gruppen

          unterteilt  werden,   abhängig  davon,  welche  Aufgabe  sie

          in   einem  Listenprogramm   haben.  Zu  der  ersten  Gruppe

          gehören  sogenannte Report Setup-Anweisungen, die allgemeine

          Eigenschaften   eines  Listenprogramms  (Listenprogrammname,

          SELECT-Anweisung  für die Datenauswahl usw.) beschreiben. Zu

          dieser Gruppe  gehören folgende,  in Beispiel 5.1 verwendete

          Anweisungen:

 

                        - .NAME,

                        - .LONGREMARK,

                        - .OUTPUT,

                        - .QUERY und

                        - .SORT      .

 

          Die    .NAME-Anweisung     beschreibt    den    Namen    des

          Listenprogramms. Diese  Anweisung muß  als  erste  Anweisung

          eines    Report-Writer-Programms   erscheinen.   Unter   dem

          Listenprogrammnamen  (in   unserem  Beispiel  bsp0501)  wird

          die Listenspezifikation im INGRES-Systemkatalog gespeichert.

          Diese  Aufgabe führt  das Kommando  sreport aus. Beim Ablauf

          des Listenprogramms  mit Hilfe  des report-Kommandos muß der

          Listenprogrammname in  der Kommandozeile  explizit angegeben

          werden. Das Kürzel .NAM ist das Synonym für .NAME.

 

          Mit  der  Anweisung  .LONGREMARK  kann  ein  Kommentar,  der

          mehrere Zeilen  umfaßt, geschrieben  werden. Diese Anweisung

          dient  zum Dokumentieren  eines Listenprogramms.  Das Kürzel

          .LREM ist  das Synonym  für .LONGREMARK.  Weil der Kommentar

          mehrere  Zeilen lang sein kann, existiert beim Report-Writer

          eine  zusätzliche Anweisung  - .ENDREMARK  -,  mit  der  das

          Kommentarende gekennzeichnet  wird. Das  Kürzel .ENDREM  ist

          das  Synonym für .ENDREMARK. Eine zweite, ähnliche Anweisung

          wie  .LONGREMARK  ist  .SHORTREMARK  (.SREM),  mit  der  ein

          einzeiliger Kommentar geschrieben werden kann.

 

          Report-Writer  unterstützt   auch  das   Dokumentieren   von

          Listenprogrammen mittels  allgemeiner Kommentare. Den Anfang

          eines solchen  Kommentars bildet  das Zeichenpaar  "/*"  und

          sein Ende  das Zeichenpaar  "*/". Der  Unterschied  zwischen

          den mit .LONGREMARK bzw. .SHORTREMARK erstellten Kommentaren

          einerseits  und  den  allgemeinen  Kommentaren  andererseits

          ist,  daß die  ersten  im  INGRES-Systemkatalog  gespeichert

          werden und  beim Aufruf des Catalog-frames von INGRES/RBF am

          Bildschirm ausgegeben werden.

 

          Die   Anweisung  .OUTPUT  (.OUT)  definiert  den  Dateinamen

          für  die  Listenausgabe.  Falls  diese  optionale  Anweisung

          in  einem  Listenprogramm  nicht  angegeben  ist,  wird  die

          Liste  standardmäßig auf  dem  Bildschirm  ausgegeben.  (Der

          Schalter "-f"  des report-Kommandos  kann  nachträglich  das

          Ausgabemedium einer Liste ändern.)

 

          Die     .QUERY-Anweisung      enthält     eine     komplette

          SELECT-Anweisung,  mit der  Daten aus  einer  oder  mehreren

          Tabellen  einer Datenbank  ausgewählt werden.  Die  Abfragen

          mittels  SELECT-Anweisung   sind  in   Kapitel   7   und   8

          beschrieben. Die in Beispiel 5.1 verwendete SELECT-Anweisung

          wählt  Daten  aus  zwei  Tabellen  der  Beispieldatenbank  -

          arbeiten  und mitarbeiter - aus. In der WHERE-Klausel dieser

          SQL-Anweisung existiert die Bedingung

 

                        date_part ('year', einst_dat) = $jahr   .

 

          Mit  der INGRES-Funktion  date_part  wird  die  Jahresangabe

          der  Spalte   einst_dat  der   Tabelle  arbeiten  ausgewählt

          und  mit der  Variablen  jahr  verglichen.  (Alle  Variablen

          eines   Report-Writer-Programms  werden   mit   dem   Präfix

          "$"   gekennzeichnet.  Jeder   Teil  einer  SELECT-Anweisung

          (Tabellenname,  Spaltenname usw.)  kann durch  eine Variable

          ersetzt werden,  die beim  Ablauf des  Listenprogramms durch

          die Benutzereingabe  ersetzt wird.  Die Wertzuweisung  einer

          Variablen  kann in  der Kommandozeile  des  report-Kommandos

          erfolgen. Falls dies unterlassen wird, wird der Benutzer vom

          System aufgefordert, die Angabe nachträglich zu machen.

 

          Hinweis.

          Die  Erstellung der  komplexen  SELECT-Anweisungen  (wie  in

          Beispiel 5.1) soll außerhalb des Listenprogramms vorgenommen

          werden.  Der Weg, den wir empfehelen, ist, die entsprechende

          SELECT-Anweisung  mit   der  isql-Schnittstelle  von  INGRES

          zu erstellen  und auszutesten.  Nachdem  sich  der  Benutzer

          überzeugt hat,  daß die SELECT-Anweisung korrekt ist, sollte

          diese Anweisung  in einer Datei gespeichert und anschließend

          in das Listenprogramm eingefügt werden.

 

          Die Anweisung  .QUERY muß  in  einem  Report-Writer-Programm

          angegeben  werden, falls  die  alternative  Anweisung  .DATA

          nicht verwendet wird. Die .DATA-Anweisung hat eine ähnliche,

          aber  eingeschränkte  Funktionalität  im  Vergleich  zu  der

          .QUERY-Anweisung.  Das Kürzel  .QUER  ist  das  Synonym  für

          .QUERY.

 

          Mit  der .SORT-Anweisung  werden die  Spalten definiert, die

          zur  Sortierung verwendet  werden. Wenn  mehrere Spalten  in

          der .SORT-Anweisung genannt sind, definiert ihre Reihenfolge

          gleichzeitig  die  Reihenfolge  der  Sortierung.  Falls  die

          .BREAK-Anweisung   in  einem   Report-Writer-Programm  nicht

          angegeben ist,  spezifiziert die  .SORT-Anweisung zusätzlich

          die Gruppenbildung  im Listenprogramm.  Das Kürzel  .SRT ist

          das Synonym für .SORT.

 

          Die     zweite    Gruppe    der    Report-Writer-Anweisungen

          definiert die  Struktur  eines  Listenprogramms.  Zu  dieser

          Anweisungsgruppe gehören:

 

                        - .HEADER,

                        - .FOOTER    und

                        - .DETAIL     .

 

          Die  .HEADER-Anweisung   spezifiziert   den   Beginn   einer

          Anweisungsgruppe,   die    am    Listen-,    Seiten-    oder

          Grupppenbildungsanfang ausgeführt wird. Dementsprechend kann

          diese Anweisung drei unterschiedliche Angaben enthalten:

 

                       - REPORT,

                       - PAGE      und

                       - spalten_name   .

 

          Die  REPORT-   bzw.  PAGE-Angabe   kennzeichnet  den  Beginn

          der  Anweisungsgruppe,  die  am  Listen-  bzw.  Seitenanfang

          ausgeführt wird.  spalten_name ist  eine  in  der  Anweisung

          .SORT bzw.  .BREAK angegebene  Tabellenspalte, die  die beim

          Gruppenwechsel auszuführende Anweisungsfolge kennzeichnet.

 

          In  Beispiel   5.1   spezifiziert   .HEADER   pr_nr,  welche

          Anweisungen   bei  jedem  Gruppenwechsel  der  Spalte  pr_nr

          ausgeführt werden.

 

          Die    .FOOTER-Anweisung   definiert    den   Beginn   einer

          Anweisungsgruppe,    die   am    Listen-,    Seiten-    oder

          Gruppenbildungsende   ausgeführt  wird.   Die   Syntax   der

          .FOOTER-Anweisung    entspricht   genau   der   Syntax   der

          .HEADER-Anweisung.

 

          Mit    der   .DETAIL-Anweisung   wird   der   Beginn   einer

          Anweisungsfolge gekennzeichnet,  die bei  der Ausgabe  jeder

          Datenzeile   ausgeführt  wird.  Diese  Anweisung  hat  keine

          zusätzlichen Angaben.  Das Kürzel  .DET ist  das Synonym für

          .DETAIL.

 

          Eine  der meistverwendeten Report-Writer-Anweisungen ist die

          .PRINT-Anweisung.  Diese Anweisung veranlaßt die Ausgabe von

          Zeichenketten, Tabellenspalten  oder Ausdrücken aller Art in

          eine  Liste. Der  Programmierer kann  die Ausgabe  mit Hilfe

          zahlreicher unterschiedlicher Formate steuern, von denen wir

          die in Beispiel 5.1 verwendeten

 

                             c(20),

                             n(6)        und

                             d("February 3 1901")

 

          erläutern  werden. Das  Format c(n)  gibt eine  Zeichenkette

          aus,  wobei n  die maximale Anzahl der auszugebenden Zeichen

          definiert. Das  zweite Format  n(b)  wird  für  die  Ausgabe

          numerischer  Werte benutzt, während d("February  3 1901") in

          Beispiel  5.1 die  Ausgabe der  Systemfunktion  current_date

          regelt. Report-Writer  verwendet das spezifische Datums- und

          Zeitformat

 

                    Sunday, February 3 1901 at 4:05:06 p.m.

 

          als Musterformat  für Werte  vom  Typ  DATE.  Dieses  Format

          kann  auch teilweise  benutzt werden,  wie in  Beispiel  5.1

          ersichtlich ist.

 

          Die letzte  Gruppe  von  Anweisungen,  die  wir  beschreiben

          werden, sind  die  Anweisungen  zur  Textpositionierung.  Zu

          diesen Anweisungen gehören u.a.:

 

                        - .TAB,

                        - .NEWLINE,

                        - .LEFT   und

                        - .CENTER        .

 

          Mit der  .TAB-Anweisung wird  die Position  in der aktuellen

          Zeile  geändert, so  daß der  Text ab der definierten Stelle

          ausgegeben  wird. Die  Änderung der  aktuellen Position kann

          sowohl  absolut (z.B.  .TAB 32)  als auch relativ (z.B. .TAB

          +12) sein. Das Kürzel .T ist das Synonym für .TAB.

 

          Die  Anweisung .NEWLINE  n verschiebt  die Textausgabe  um n

          Zeilen. Falls  die optionale Angabe n ausgelassen wird, wird

          standardmäßig der Wert 1 angenommen, was die Verschiebung an

          den Anfang  der nächsten  Zeile bedeutet. Das Kürzel .NL ist

          das Synonym für .NEWLINE.

 

          Die  Anweisung .LEFT  n positioniert einen Textblock relativ

          um  n Stelen  nach links. Falls n ausgelassen wird, wird der

          Textblock linksbündig ausgegeben. (Report-Writer unterstützt

          auch  die analoge  Anweisung .RIGHT.)  Die Anweisung .CENTER

          zentriert einen Textblock.

 

          Report-Writer    ermöglicht   auch    die   Verwendung   von

          Kontrollstrukturen mittels der IF-Anweisung. Diese Anweisung

          hat  hier dieselbe  Syntax und  Funktionalität  wie  in  den

          meisten anderen Programmiersprachen.

 

          Die  Listenausgabe des  Beispiels 5.1  sieht  folgendermaßen

          aus:

 

Datum:August 14 1991

 

 

                                    Einstellungen im Jahre 1988

 

 

 

Projektnummer

Mitarbeiternummer 

Mitarbeitername    

Eingestellt am:

 

p1           

285591             

Mozer              

88-08-01

 

p1           

10102             

Huber              

88-10-01

 

Das juengste  Einstellungsdatum ist: 88-08-01

 

 

 

p2           

285592            

Mozer              

88-02-01

 

p2           

25348              

Keller             

88-02-15

 

Das juengste  Einstellungsdatum ist: 88-08-01

 

 

 

p3           

090313            

Meier              

88-11-15

 

Das juengste  Einstellungsdatum ist: 88-08-01

 

 

                                 Listenende

 

Zurück zum Inhaltsverzeichnis

 

 

5.4        INGRES/GRAPHS

 

 

 

          INGRES/GRAPHS ist  eine weitere  Komponente von  INGRES, die

          die Erstellung  von  Berichten  ermöglicht.  Im  Unterschied

          zu  INGRES/REPORTS bzw.  Report-Writer, die  beide  Berichte

          in einer  Listenform erstellen,  erzeugt  INGRES/GRAPHS  die

          Ausgabe in grafischer Form.

 

          Um  die von  INGRES/GRAPHS erstellten  Grafiken  auszugeben,

          benötigt  der   Benutzer  einen   entsprechenden  grafischen

          Bildschirm.  (Ein   alphanumerischer  Bildschirm  kann  u.U.

          auch für  die Ausgabe  von den  mit INGRES/GRAPHS erstellten

          Grafiken  benutzt werden;  in diesem  Fall aber  werden  die

          Linien  durch   Buchstaben  ersetzt,  was  eine  zusätzliche

          Vorstellungskraft  des Benutzers  erfordert, um  die  Grafik

          erfassen zu können.)

 

          INGRES/GRAPHS  enthält eine  einzige  Komponente  -  VIGRAPH

          ("Visual Graphic  Editor") -  die  aufgerufen  wird, nachdem

          die Funktion  Graphs im  INGRES/MENU  ausgewählt,  bzw.  das

          Betriebssystemkommando vigraph  ausgeführt  wird.  Nach  dem

          Aufruf der Funktion Graphs erscheint das VIGRAPH-frame (Abb.

          5-7):

 

                                                                

                                                 Abb. 5-7 VIGRAPH-frame

 

          Das  in  Abbildung  5-7  dargestellte  frame  enthält  vier

          existierende   Grafikspezifikationen:    bar1.gr,   line1.gr,

          pie1.gr  und   scatt1.gr,  die   als  Demonstrationsbeispiele

          gemeinsam   mit   dem   System   ausgeliefert   werden.   Die

          Spezifikation  bar1.gr ist in der Form eines Balkendiagramms,

          line1.gr   in  Form   einer  Liniengrafik,  pie1.gr  in  Form

          eines  Kuchen- und  scatt1.gr in  Form eines  Punktediagramms

          dargestellt.

 

          Graphic Catalog-frame enthält folgende Funktionen:

 

Funktion

Bedeutung

CreateBlank        

unterstützt die Erstellung einer ganz neuen Grafikspezifikation.

Destroy            

löscht eine existierende Grafikspezifikation.

Edit               

editiert eine existierende Grafikspezifikation.

Rename             

benennt eine existierende Grafikspezifikation um.

MoreInfo

gibt die zusätzliche Information (Erstellungsdatum,  Kommentar  usw.) über eine existierende Grafikspezifikation aus.

Sketch             

zeichnet eine kleine Grafik zu  Anschauungszwecken in der rechten unteren Bildschirmecke.

Profile            

gibt alle VIGRAPH-Parameter am Bildschirm aus. Der Benutzer hat anschließend die Möglichkeit, die Parameter zu ändern.

MapData            

erlaubt dem Benutzer, Daten für eine Grafikspezifikation zu definieren.

Plot               

zeichnet die Grafik für die ausgewählte Spezifikation.

 

 

         An einem  einfachen Beispiel  werden  wir  die  Benutzung  von

         INGRES/GRAPHS  zeigen. Das  Beispiel  gibt,  mit  Hilfe  eines

         Balkendiagramms,  die Mittel  aller Projekte  aus.  Durch  die

         Auswahl  der Funktion  Edit für  die Spezifikation  bar1.gr in

         der Graph  Catalog-Maske und  der anschließenden  Auswahl  der

         Funktion MapData erscheint das Data Mapping-frame in Abbildung

         5-8.

 

                         Abb. 5-8 Data Mapping-frame für die Tabelle projekt

 

          Weil wir  die Mittel  aller Projekte aus der Tabelle projekt

          sehen  wollen,  muß zuerst  die  Tabelle  projekt  angegeben

          werden. Im  Falle  eines  Balkendiagramms  kennzeichnet  die

          X-Koordinate  den Balkennamen,  während die Y-Koordinate die

          Balkenhöhe definiert.  (Die Z-Koordinate definiert den Namen

          der  Teilbalken.)  In  unserem Beispiel ist die Spalte pr_nr

          die X-,  mittel die  Y-Koordinate, während  die Z-Koordinate

          keine Angabe  enthält, weil  keine  Teilbalken  in  Grafiken

          gebildet  werden.  Nach  dem  Speichern  der  so  geänderten

          Spezifikation und  der Auswahl  der Funktion  Plot wird  das

          Balkendiagramm  (Abb. 5-9)  für die  Mittel  aller  Projekte

          ausgegeben.

 

                                                                          

                                                                              

                                                                          

             Abb. 5-9 Balkendiagramm für die Mittel aller Projekte

 

 

Zurück zum Inhaltsverzeichnis

 

 

Aufgaben.

 

 

A.5.1     Erstellen   Sie  die  Liste  aller  Projekte,  in  denen

              einzelne    Mitarbeiter   arbeiten,    gruppiert    nach

              Mitarbeiternamen. Am  Anfang jeder  Gruppe soll der Name

              und der  Vorname  des  Mitarbeiters  ausgegeben  werden,

              gefolgt   von  den   einzelnen  Daten   jedes  Projektes

              (Projektnummer, Projektname und Aufgabe des Mitarbeiters

              in diesem Projekt).

 

A.5.2     Erstellen Sie  die Liste  aller  Mitarbeiter,  gruppiert

              nach  dem  Standort  ihrer  Abteilung.  Die  Liste  soll

              die  Personalnummer und  den  Namen  jedes  Mitarbeiters

              enthalten.

 

A.5.3     Erstellen Sie  die Liste  aller  Mitarbeiter,  gruppiert

              nach  den Namen  der Abteilungen,  denen sie  angehören.

              Die  Liste soll Namen, Vornamen und Projektaufgabe jedes

              Mitarbeiters enthalten.

 

Zurück zum Inhaltsverzeichnis