Concaténation universelle

Dans cette section :

Comment :

La concaténation universelle permet de récupérer des données à partir de différentes sources de données dans une seule requête ; toutes les données, quelles que soient leurs sources, semblent provenir d'un seul fichier. La phrase MORE peut concaténer tous types de sources de données (tel que FOCUS, DB2, IMS, et VSAM), à condition qu'elles partagent des champs correspondants au même format. Vous pouvez utiliser les tests de sélection WHERE et IF conjointement avec MORe. Pour plus d'informations, consultez Sélection d'enregistrements pour votre rapport.

Pour utiliser MORE, vous devez diviser la requête en :

Lors de la récupération, des données sont prises de chaque source de données individuellement, puis toutes les données sont triées et la sortie est formatée comme le spécifie la requête principale.


Haut de page

x
Syntaxe : Concaténer des sources de données

La phrase MORE, qui est accessible dans les commandes TABLE et MATCH, spécifie la façon de concaténer des données des sources de données avec des fichiers Master dissemblables.

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

où :

TABLE|MATCH

Commence la requête qui concatène les sources de données.

file1

Est le nom de la première source de données.

main request

Est une requête, sans END ou RUN, qui récupère la première source de données et définit les champs de données, les critères de tri et le format de sortie pour toutes les données. Les critères WHERE et IF dans la requête principale ne s'appliquent qu'à file1.

Lorsque vous concaténez des fichiers dans la commande TABLE, vous pouvez aussi définir des valeurs calculées pour la première source de données.

MORE

Commence une sous requête. Il n'y a pas de limite au nombre de sous requêtes, à part le mémoire disponible.

FILE file2

définit file2 comme la deuxième source de données à concaténer.

subrequest

Est une sous requête. Les sous requêtes ne peuvent comprendre que des phrases WHERE et IF.

END|RUN

Termine la requête.



Exemple : Concaténation de sources de données

Les sources de données EMPLOYEE et EXPERSON comprennent des informations d'employé. Vous pouvez concaténer leurs données communes dans un seul fichier :

La requête annotée suivante concatène les deux sources de données :

   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. La requête doit remapper les noms de champ et les formats dans la source de données EXPERSON pour qu'ils correspondent à ceux employés dans la requête principale.
  2. La requête principale appelle la première source de données EMPLOYEE. Elle définit également les champs d'impression et de tri pour les deux sources de données.
  3. La phrase MORE commence la sous requête qui concatène la prochaine source de données, EXPERSON. Aucune commande d'affichage n'est autorisée dans la sous requête. Les critères IF et WHERE sont les seuls composants de rapport autorisés dans une sous requête.

Haut de page

x
Correspondance de formats et de noms de champ

Tous les champs référencés dans la requête principale doivent exister avec les mêmes noms et formats dans tous les fichiers concaténés, ou ils doivent être re-mappés vers ces noms et formats au moyen de champs virtuels. Parmi les champs référencés sont ceux utilisé dans les commandes COMPUTE, les en-têtes, les phrases d'agrégation, les phrases de tri, et les commandes PRINT, LIST, SUM, COUNT, WRITE ou ADD.

Un format réussi implique que :

Type de format d'utilisation (USAGE)

Correspondance

A

Le type et la longueur de format doivent être égaux.

I, F, D

Le type de format doit être le même.

P

Le type de format et l'échelle doivent être égaux.

DATE (nouvelle)

Les informations de format (type, longueur, composants et ordre) doivent toujours se correspondre.

DATE (ancienne)

Les options d'édition doivent être les mêmes.

DATE - HEURE

Les informations de format (type, longueur, composants et ordre) doivent toujours se correspondre.

Les champs de texte et les champs CLOB (s'ils sont supportés) ne peuvent pas être concaténés.



Exemple : Correspondance des noms de champ et des formats

L'exemple annoté suivant concatène des données des sources de données EMPDATA et SALHIST.

   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. Définit NEWID dans la source de données EMPDATA avec le même nom et format que le champ de tri référencé dans la requête principale.
  2. Définit NEWID dans la source de données SALHIST avec le même nom et format que le champ de tri référencé dans la requête principale.
  3. La requête principale. Cette requête comprend tout le formatage du rapport résultant et elle nomme le premier fichier à concaténer. Elle comprend également toutes les informations d'impression et de tri. Les champs imprimés et les champs de tri doivent exister sous forme de champs réels ou DEFINE dans chaque fichier.
  4. Le critère WHERE dans la requête principale ne s'applique qu'à la source de données EMPDATA.
  5. La phrase MORE concatène la source de données SALHIST à la source de données EMPDATA.
  6. Ce critère WHERE ne s'applique qu'à la source de données SALHIST. Notez que le critère WHERE fait référence à un champ qui n'est pas défini dans la source de données EMPDATA.

La sortie est :

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

Lorsque vous concaténez des données, les ensembles d'enregistrements sont tout simplement annexés, et non pas regroupés ou agrégés à travers les fichiers. Par conséquent, s'il existe des critères de tri doubles, ils s'affichent deux fois dans la sortie de rapport.


WebFOCUS