In diesem Abschnitt: Vorgehensweise: |
Sie können die MORE-Phrase in einer MATCH-Anfrage verwenden, um bis zu 16 Sets verketteter Datenquellen zu kombinieren.
Sie müssen alle Voraussetzungen für MATCH in der Hauptanfrage erfüllen. Alle Datenquellen, die kombiniert werden sollen, müssen nach mindestens einem Feld mit übereinstimmendem Format sortiert werden.
Die MATCH-Anfrage ergibt eine HOLD-Datei, in der die kombinierten Daten enthalten sind. Sie können bestimmen, wie nachfolgende Dateien kombiniert werden sollen, indem Sie einen AFTER MATCH-Befehl verwenden. Folgendes kann z. B. beibehalten werden:
1. MATCH FILE file1main request MORE 2. FILE file2subrequest MORE 3. FILE file3subrequest RUN 4. FILE file4main request 5. [AFTER MATCH merge_phrase] MORE 6. FILE file5subrequest MORE 7. FILE file6subrequest RUN 8. FILE file7main request 9. [AFTER MATCH merge_phrase] MORE 10.FILE file8subrequest MORE 11.FILE file9subrequest END
Wenn die Datenquellen in MATCH Sortierfelder der höheren Ebene mit identischen Namen und Formaten gemeinsam verwenden, kombiniert der MATCH-Ablauf Datensätze mit übereinstimmenden Sortierfeldwerten in allen Dateien. Falls die beiden Datenquellen in MATCH dasselbe Sortierfeld mit unterschiedlichem Namen besitzen, können Sie einen der Namen mit einer AS-Phrase ändern.
Falls die Dateien in MATCH keine Sortierfelder der höheren Ebene gemeinsam verwenden, werden die Felder nicht verglichen. Stattdessen werden die Felder des ersten Datensatzes in jeder Datenquelle so kombiniert, dass sie den ersten Datensatz in der HOLD-Datei erstellen, usw. für alle verbleibenden Datensätze.
Das folgende Beispiel verdeutlicht MATCH mit MORE, wobei ein überstimmendes Sortierfeld verwendet wird:
1. DEFINE FILE EMPDATA CURR_SAL/D12.2M = CSAL; FIRST_NAME/A10 = FN; EID/A9 = PIN; END -*Start MATCH. 2. MATCH FILE EMPLOYEE SUM CURR_SAL AS 'CURRENT' FIRST_NAME AS 'FIRST' BY EID AS 'SSN' -*Concatenate file EMPDATA to EMPLOYEE to form first MATCH answer set. 3. MORE FILE EMPDATA RUN -*Second MATCH answer set: 4. FILE TRAINING PRINT EXPENSES 5. BY PIN AS 'SSN' 6. AFTER MATCH HOLD OLD-OR-NEW END -*Print merged file: 7. TABLE FILE HOLD PRINT * END
Die erste Seite der Ausgabe ist:
SSN CURRENT FIRST EXPENSES --- ------- ----- -------- 000000010 $55,500.00 DANIEL 2,300.00 000000020 $62,500.00 MICHAEL . 000000030 $70,000.00 LOIS 2,600.00 000000030 $70,000.00 LOIS 2,300.00 000000040 $62,500.00 RUTH 3,400.00 000000050 $54,100.00 PETER 3,300.00 000000060 $55,500.00 DORINA . 000000070 $83,000.00 EVELYN . 000000080 $43,400.00 PAMELA 3,200.00 000000080 $43,400.00 PAMELA 3,350.00 000000090 $33,000.00 MARIANNE . 000000100 $32,400.00 TIM 3,100.00 000000110 $19,300.00 ANTHONY 1,800.00 000000110 $19,300.00 ANTHONY 2,500.00 000000110 $19,300.00 ANTHONY 2,400.00 000000120 $49,500.00 KATE 2,200.00 000000130 $62,500.00 MARCUS .
In diesem Beispiel haben die kombinierten Datenquellen kein Sortierfeld gemein:
DEFINE FILE EMPDATA CURR_SAL/D12.2M = CSAL; FIRST_NAME/A10 = FN; EID/A9 = PIN; END -*Start MATCH MATCH FILE EMPLOYEE SUM CURR_SAL AS 'CURRENT' FIRST_NAME AS 'FIRST' BY EID AS 'SSN' -*Concatenate EMPDATA to EMPLOYEE to form the first MATCH answer set MORE FILE EMPDATA RUN -*Second MATCH answer set: FILE TRAINING PRINT EXPENSES BY PIN AS 'EID' AFTER MATCH HOLD OLD-OR-NEW END -*Print merged file: TABLE FILE HOLD PRINT * END
Die AS-Phrase ändert das Antwortset. Da die Sortierfelder nicht mehr denselben Namen haben, werden die Felder ohne Beachtung der übereinstimmenden Datensätze kombiniert.
Die erste Seite der Ausgabe ist:
SSN CURRENT FIRST EID EXPENSES --- ------- ----- --- -------- 000000010 $55,500.00 DANIEL 000000010 2,300.00 000000020 $62,500.00 MICHAEL 000000030 2,600.00 000000030 $70,000.00 LOIS 000000030 2,300.00 000000040 $62,500.00 RUTH 000000040 3,400.00 000000050 $54,100.00 PETER 000000050 3,300.00 000000060 $55,500.00 DORINA 000000080 3,200.00 000000070 $83,000.00 EVELYN 000000080 3,350.00 000000080 $43,400.00 PAMELA 000000100 3,100.00 000000090 $33,000.00 MARIANNE 000000110 1,800.00 000000100 $32,400.00 TIM 000000110 2,500.00 000000110 $19,300.00 ANTHONY 000000110 2,400.00 000000120 $49,500.00 KATE 000000120 2,200.00 000000130 $62,500.00 MARCUS 000000140 3,600.00 000000140 $62,500.00 VERONICA 000000150 3,400.00 000000150 $40,900.00 KARL 000000160 1,000.00 000000160 $62,500.00 ROSE 000000180 1,250.00 000000170 $30,800.00 WILLIAM 000000190 3,150.00
WebFOCUS |