Universale Verkettung

In diesem Abschnitt:

Vorgehensweise:

Mit der universalen Verkettung können Sie Daten aus andersartigen Datenquellen mit nur einer Anfrage abrufen. Alle Daten werden scheinbar aus nur einer Datei abgerufen, unabhängig davon, um welche Quellen es sich handelt. Die Phrase MORE kann alle Datenquellentypen (wie z. B. FOCUS, DB2, IMS und VSAM) verketten, vorausgesetzt, dass diese entsprechende Felder mit demselben Format gemein haben. Sie können WHERE- und IF-Auswahltests in Zusammenhang mit MORE verwenden. Weitere Informationen zu diesem Thema finden Sie unter Datensätze für einen Report auswählen.

Sie müssen, um MORE verwenden zu können, Ihre Anfrage wie folgt unterteilen:

Während des Abrufs werden Daten aus allen Datenquellen nacheinander erfasst. Daraufhin werden alle Daten sortiert und die Ausgabe wird formatiert, wie es in der Hauptanfrage angegeben wurde.


Nach oben

x
Syntax: Datenquellen verketten

Die MORE-Phrase, auf die in den Befehlen TABLE und MATCH zugegriffen werden kann, gibt an, wie Daten aus Datenquellen mit unähnlichen·Masterdateien verkettet werden können.

{TABLE|MATCH}  FILE file1main request 
MORE
FILE file2 
  subrequest 
MORE
FILE file3 
  subrequest 
MORE
   .
   .
   .
{END|RUN}

Hierbei gilt:

TABLE|MATCH

Steht am Anfang der Anfrage, die die Datenquellen verkettet.

file1

Ist der Name der ersten Datenquelle.

Hauptanfrage

Ist eine Anfrage ohne END oder RUN, die die erste Datenquelle abruft und die Datenfelder, Sortierkriterien und das Ausgabeformat für alle Daten definiert. WHERE- und IF-Kriterien in der Hauptanfrage gelten nur für file1.

Wenn Dateien innerhalb des TABLE-Befehls verkettet werden, können Sie außerdem berechnete Werte für die erste Datenquelle definieren.

MORE

Steht am Anfang einer Unteranfrage. Die Anzahl der Unteranfragen ist nicht beschränkt, außer durch verfügbaren Speicherplatz.

FILE file2

Definiert file2 als zweite Datenquelle für die Verkettung.

Unteranfrage

Ist eine Unteranfrage. Unteranfragen können nur WHERE- und IF-Phrasen enthalten.

END|RUN

Steht am Ende der Anfrage.



Beispiel: Datenquellen verketten

Sowohl die EMPLOYEE- als auch die EXPERSON-Datenquelle enthält Informationen über Angestellte. Ihre übereinstimmenden Daten können zu einer einzelnen Datei verkettet werden:

Die im Folgenden erörterte Anfrage verkettet die beiden Datenquellen:

   DEFINE FILE EXPERSON 
1. EMP_ID/A9 = SSN;
   CURR_SAL/D12.2 = WAGE;
   END 
2. TABLE FILE EMPLOYEE
   PRINT CURR_SAL
   BY EMP_ID 
3. MORE
   FILE EXPERSON
   END
  1. Die Anfrage muss die Feldnamen und -formate in der Datenquelle EXPERSON neu zuordnen, damit sie mit denen in der Hauptanfrage übereinstimmen.
  2. Die Hauptanfrage gibt die erste Datenquelle in der Verkettung (EMPLOYEE) an. Sie definiert außerdem die Druck- und Sortierfelder für beide Datenquellen.
  3. Die MORE-Phrase steht am Anfang der Unteranfrage, die die nächste Datenquelle verkettet (EXPRESSION). In der Unteranfrage sind keine Anzeigebefehle erlaubt. IF- und WHERE-Kriterien sind die einzigen in der Unteranfrage zugelassenen Reportkomponenten.

Nach oben

x
Abgleich von Feldname und Feldformat

Alle Felder, auf die in der Hauptanfrage verwiesen wird, müssen entweder in allen verketteten Dateien mit denselben Namen und Formaten vorhanden sein oder mit virtuellen Feldern diesen Namen und Formaten zugeordnet werden. Zu Feldern, auf die verwiesen wird, gehören jene in COMPUTE-Befehlen, Kopfzeilen, Aggregationsphrasen, Sortierphrasen und in den Befehlen PRINT, LIST, SUM, COUNT, WRITE oder ADD.

Für den erfolgreichen Abgleich von Formaten gilt Folgendes:

Verwendeter Formattyp

Übereinstimmung

A

Formattyp und Länge müssen übereinstimmen.

I, F, D

Der Formattyp muss übereinstimmen.

P

Formattyp und Skala müssen übereinstimmen.

DATE (neu)

Formatierungsinformationen (Typ, Länge, Komponenten und Reihenfolge) müssen immer übereinstimmen.

DATE (alt)

Bearbeitungsoptionen müssen übereinstimmen.

DATE -TIME

Formatierungsinformationen (Typ, Länge, Komponenten und Reihenfolge) müssen immer übereinstimmen.

Textfelder (TX) und CLOB-Felder (falls unterstützt) können nicht verkettet werden.



Beispiel: Feldnamen und Formate abgleichen

Im folgenden Beispiel werden Daten der Datenquellen EMPDATA und SALHIST verkettet.

   DEFINE FILE EMPDATA 
1. NEWID/A11=EDIT (ID,'999-99-9999');
   END
 
   DEFINE FILE SALHIST 
2. NEWID/A11=EDIT (ID,'999-99-9999');
   CSAL/D12.2M=OLDSALARY;
   END
  
3. TABLE FILE EMPDATA
   HEADING
   "EMPLOYEE SALARIES"
   " "
   PRINT CSAL
   BY NEWID 
4. WHERE CSAL GT 65000 
5. MORE
   FILE SALHIST 
6. WHERE OLDSALARY GT 65000
   END
  1. Definiert NEWID in der EMPDATA-Datenquelle mit dem Namen und Format des Sortierfeldes, auf das in der Hauptanfrage verwiesen wird.
  2. Definiert NEWID in der SALHIST-Datenquelle mit dem Namen und Format des Sortiertfeldes, auf das in der Hauptanfrage verwiesen wird.
  3. Die Hauptanfrage. Enthält alle Formate für den resultierenden Report und gibt die Datei an, die zuerst verkettet werden soll. Sie enthält außerdem alle Druck- und Sortierinformationen. Sowohl die gedruckten Felder als auch die Sortierfelder müssen als reale oder DEFINE-Felder in jeder Datei vorhanden sein.
  4. Das WHERE-Kriterium in der Hauptanfrage gilt nur für die EMPDATA-Datenquelle.
  5. Die MORE-Phrase verkettet die SALHIST- mit der EMPDATA-Datenquelle.
  6. Dieses WHERE-Kriterium gilt nur für die SALHIST-Datenquelle. Beachten Sie, dass es auf ein Feld verweist, das in der EMPDATA-Datenquelle nicht definiert wurde.

Die Ausgabe ist:

EMPLOYEE SALARIES
  
  
  
NEWID
SALARY
000-00-0030
 $70,000.00
 $70,000.00
000-00-0070
 $83,000.00
 $83,000.00
 $79,100.00
000-00-0200
$115,000.00
$115,000.00
$102,500.00
 $89,500.00
000-00-0230
 $80,500.00
 $80,500.00
 $75,000.00
 $70,800.00
000-00-0300
 $79,000.00
 $79,000.00
 $75,000.00
 $70,000.00

Wenn Sie Daten verketten, werden Datensatzreihen einfach hinzugefügt und nicht gruppiert oder über Dateien hinweg aggregiert. Daher werden duplizierte Sortierfelder, falls welche vorhanden sind, zweimal in der Reportausgabe angezeigt.


WebFOCUS