> Tech > Ordonner les enregistrements d’après une colonne dans un fichier Join secondaire

Ordonner les enregistrements d’après une colonne dans un fichier Join secondaire

Tech - Par iTPro.fr - Publié le 24 juin 2010
email

Les trucs & astuces de la semaine du 28 Novembre au 4 décembre 2005

Ordonner les enregistrements d’après une colonne dans un fichier Join secondaire

Q: Je veux joindre des enregistrements provenant des fichiers Customer et Sales et les ordonner d’après le champ TotAmt du fichier Sale. J’ai essayé d’utiliser DDS pour créer un fichier logique join, mais les fichiers clé doivent venir du fichier primaire, qui est mon fichier Customer. Est-il possible d’ordonner les enregistrements sur un champ de fichier secondaire ?

R: Voici la réponse « facile » à  votre question précise : inversez l’ordre des fichiers Customer et Sale (c’est-à -dire sur les mots-clés JFILE et JOIN dans votre source DDS de fichier logique). Cette manoeuvre fait du fichier Sale le fichier primaire et vous pouvez ensuite spécifier le champ TotAmt comme le champ clé du fichier logique join. Mais supposons que cette méthode ne convienne pas dans une certaine situation. Par exemple, vous pourriez vouloir ordonner les enregistrements sur des champs provenant de deux, ou plus, des fichiers joints. Il y a alors deux solutions. La plus simple consiste à  utiliser SQL. Sur l’instruction Select, incluez une clause Order By qui peut spécifier les colonnes (champs) provenant de n’importe quelle table (fichier) dans le join (figure 1).

Vous pouvez utiliser une instruction Select qui a une clause Order By dans une requête ad hoc, dans une instruction SQL Declare Cursor imbriquée, ou via JDBC ou ODBC. (Vous ne pouvez pas utiliser ce genre d’instruction pour créer une vue SQL.)

La commande OpnQryF (Open Query File) offre une alternative non-SQL. Utilisez le paramètre KeyFld (Key field) de la commande, qui autorise des champs provenant de n’importe quel fichier joint. La figure 2 en montre un exemple.

Comme avec toute commande OpnQryF, utilisez d’abord un override de fichier pour faire du fichier de requête ouvert un partagé ouvert. Dans le cas d’un join, utilisez aussi l’override pour rediriger l’opération d’ouverture de fichier d’un programme applicatif vers le fichier de requête. (Pour un fichier de requête non-join, le nom du fichier de requête et le nom du fichier du programme d’application sont souvent les mêmes et donc la redirection n’est pas nécessaire.)

Cet exemple suppose que le programme applicatif DFspCusSale déclare le fichier CustSale (par exemple, sur un F-spec RPG), un fichier logique join qui sert à  fournir le format d’enregistrement pour les opérations d’I/O du programme applicatif et OpnQryF. L’override redirige les références de fichier CustSale du programme applicatif vers le fichier de requête partagé, qui est par défaut identifié par le premier fichier listé dans le paramètre File (nom du fichier) de la commande OpnQryF (c’est-à -dire Customer).

Quand le programme DspCusSale exécute une opération open pour le fichier CustSale, le système utilisera le fichier de requête ouvert par la commande OpnQryF pour fournir les enregistrements au programme. Ces enregistrements seront ordonnés par les champs CustId et TotAmt.

Téléchargez gratuitement cette ressource

Cybersécurité sous contrôle à 360°

Cybersécurité sous contrôle à 360°

Avec Cloud in One, les entreprises ne gagnent pas uniquement en agilité, en modernisation et en flexibilité. Elles gagnent également en sécurité et en résilience pour lutter efficacement contre l’accroissement en nombre et en intensité des cyberattaques. Découvrez l'axe Cybersécurité de la solution Cloud In One.

Tech - Par iTPro.fr - Publié le 24 juin 2010