Old school réponse
La commande Description de l'objet d'affichage (DSPOBJD) a une parm de sortie qui accepte * OUTFILE. Vous utilisez simplement le fichier de modèle, QADSPOBJ, dans votre déclaration DCLF
et utilisez OVRDBF
pour remplacer votre fichier de sortie réel avant d'utiliser la commande RCVF
pour lire le premier enregistrement.
Problèmes avec cela est que le format du fichier de sortie pourrait changer avec une nouvelle version ou même avec l'application d'un PTF.
réponse moderne Générique
utilisation CL ILE et la liste d'objets API (QUSLOBJ). Les données renvoyées sont déversées dans un espace utilisateur. Vous pouvez utiliser les API de l'espace utilisateur pour y accéder dans votre programme ILE CL.
Tableau (PF) de réponse moderne spécifique
(Extrait d'une réponse par jmarkmurphy)
Vous pouvez également essayer d'utiliser SQL comme référencé par John Y. Voici une requête qui renverra tous les fichiers physiques dans un bibliothèque:
select *
from qsys2.systables
where table_type in ('P', 'T')
and table_schema = 'MYLIB'
and file_type = 'D'
Je cherche une liste de fichiers physiques dans la bibliothèque, cela ne me donne pas cette information – uSeruSher
@uSeruSher - Ils vous donneront ce dont vous avez besoin. Qu'avez-vous essayé? Si vous utilisez DSPOBJD, n'oubliez pas que vous pouvez utiliser '* ALL' comme nom d'objet. –
Personnellement, je ne suis pas un fan des API, surtout si vous devez créer des appels à partir de zéro. (Une histoire différente si vous avez déjà des wrappers qui traînent.) La façon "old school" est plus simple et ne devrait pas être découragée. (Il s'agit de récupérer la sortie '* PRINT' qui devrait être déconseillée.) De plus, la nouvelle * nouvelle * méthode utilise SQL et les catalogues et services DB2 for i. –