Conseils et astuces en programmation et développement - Partie 1 - Administration - Dossiers par Thème



System i > Dossiers par Thème > Administration

Conseils et astuces en programmation et développement - Partie 1

Tags :  Administration / BI / Infrastructure / iSeries Navigator / Utilisateurs / System i

Par Collectif. Mise en ligne : 13 Janvier 2010, Publication : Fevrier 2008



  • API : Extraire un nom de procédure
  • Sortie de Job Log formatée
  • Extraire la longueur maximale de DTAQ
  • COMMANDES : Oui, oui, j’ai essayé. Ca suffit !
  • D’autres clés


  • Facilitez-vous la vie avec ces conseils utiles de lecteurs, IBMeurs et nos rédacteurs Techniques.


    Du nouveau du côté des trucs et astuces en environnement i : nos experts se sont penchés sur la question pour allier performance et efficacité !




    API : Extraire un nom de procédure


    Avez-vous besoin d’extraire le nom d’une procédure courante ? Cette information est souvent nécessaire à l’occasion d’un audit ou d’un traitement d’erreurs. Elle peut être obtenue de deux manières.

    Méthode classique. Envoyer un message à l’appelant en utilisant l’API Send Program Message (QMHSNDPM), extraire le message en utilisant l’API Retrieve Program Message (QMHRCVPM), et extraire le nom de la procédure envoyeuse. Cette méthode donne de bons résultats mais n’est pas très performante. En outre, une partie de l’information n’est pas toujours immédiatement disponible.

    Meilleure méthode. Appeler l’API Retrieve Call Stack (QWVRCSTK). Cette méthode donne aussi de bons résultats mais les utilisateurs ont tendance à imbriquer l’appel vers QWVRCSTK directement dans la procédure (ou dans un copybook), avec pour résultat du code en double.

    La solution consiste à avoir une procédure unique appelée GetProcName() dans un module appelé PROCNAME dans un programme de service (aussi appelé PROCNAME). Le PROCNAME *SRVPGM se trouve dans un répertoire de liage d’utilitaires appelé UTILITY, auquel toutes les applications font référence pendant la compilation avec le paramètre BNDDIR pour des commandes, telles que Create Bound RPG Program (CRTBNDRPG) et Create Cobol Module (CRTCBLMOD).

    En incluant le copybook PROCNAME_P dans vos programmes, vous accédez à la procédure GetProcName(). Pour connaître le nom de la procédure courante, appelez simplement GetProcName, qui passe qproc (une structure de données aussi définie dans le copybook PROCNAME_P).

    Après l’appel adressé à GetProcName, la structure de données qproc contient les noms de la bibliothèque, du programme (ou programme de service), du module, et de la procédure qui a appelé GetProcName(). J’aime utiliser cette approche conjointement à l’opcode DUMP pour identifier le fichier spoolé program dump QPPGMDMP. /free D string S 132A ... ... procedure code here ... begsr *pssr; GetProcName( qproc ); string = %trim( qproc.library ) + '/' + %trim( qproc.program ) + '/' + %trim( qproc.module ) + '/' + %trim( qproc.proc ); dump(a) string; endsr; /end-free

    Comme résultat, la ligne supérieure du fichier spoolé QPPGMDMP contient quelque chose du genre MYLIB/ MYSRVPGM/MYMOD1/GetSystemValue – où GetSystem Value() est la procédure qui a appelé GetProcName(). Grâce à cette information, il est beaucoup plus facile de trouver le bon fichier spoolé s’il y en a beaucoup. Faute de spécifier un paramètre pour l’opcode DUMP, la ligne supérieure du fichier spoolé QPPGMDMP contient simplement ILE RPG/400 FORMATTED DUMP.

    Pour télécharger le code, aller sur iTPro. Le code de la procédure PROCNAME et du copybook PROCNAME_P est inclus, ainsi que le code d’un programme appelé TESTPROCR qui montre comment appeler PROCNAME. Pour plus d’informations sur le préprocesseur compile, lire l’article « Using a Compile Preprocessor » - Club abonnés.

    - Rory Hewitt Software developer




    Sortie de Job Log formatée

    La plus grande partie de mon développement Web s’est faite du côté .NET de la barrière. Généralement les développeurs .NET utilisent les méthodes trace.warn() ou trace.write() pour fournir l’information de débogage.

    Cependant, en essayant de suivre à la trace les programmes CGI, je n’ai pas trouvé de méthode nette et légère pour accomplir cela. Jusqu’au jour où Bob Cozzi m’a présenté une API : Qp0zLprintf, qu’il utilise pour envoyer l’information au journal des travaux (job log). Le prototype RPG IV Qp0zLprintf (figure 1) peut sembler un peu curieux parce que c’est réellement une fonction C, mais il est simple d’emploi.

    L’API attend au moins un paramètre sous forme de chaîne avec un caractère nouvelle ligne (x'25') et une terminaison nulle (x'00'). La valeur options(*string) ajoute le terminateur null ; mais vous devez supporter le nouveau caractère. Si de multiples paramètres sont passés à l’API, le premier sert de chaîne de formatage.

    Toute autre fonctionnalité Qp0zLprintf est identique à la manière dont vous utilisez la fonction C printf. Les exemples de la figure 2 produisent tous deux la même entrée d’une ligne dans le job log. Ce dernier contient des détails de message similaires à ceux de la figure 3. Depuis que j’ai découvert cette API, je l’ai utilisée pour d’autres choses que le débogage de programme CGI.

    En effet, cette API convient bien dans des jobs batch SQL à longue exécution, pour lesquels de multiples instructions doivent s’exécuter, quand l’API est incorporée dans des programmes interactifs complexes utilisés pour déterminer des règles de gestion, ou encore quand l’API est imbriquée dans un job serveur sans fin.

    Quel que soit son mode d’utilisation, Qp0zLprintf offre aux développeurs un outil discret et bon marché, utile pour pratiquement toute tâche System i.

    - Eddie Alexander Information System Levy Home Entertainment



      1   2   3     Suite



    Note : les figures, codes sources et fichiers auquels fait référence l'article sont visualisables au sein de la rubrique Club Abonnés. Une fois authentifié dans le club, il vous suffit de rechercher le dossier concerné dans l'édition de System iNEWS publié en Fevrier 2008 du Club Abonnés !





    Dossiers System i
    + Administration (237)
    + Architectures (51)
    + Bases de données (65)
    + Hardware (23)
    + Internet Intranet (43)
    + Operating Systems (36)
    + Réseaux (40)
    + Sécurité (34)


    Accès par mots clés
    + .NET
    + Active Directory
    + Administration
    + ADSL
    + Appliances
    + Architecture
    + Azure
    + Backup
    + Bases de données
    + BizTalk
    + Cloud Computing
    + Cluster
    + Collaboratif
    + Communauté
    + Communications Unifiées
    + Correctif
    + Couplage
    + Cryptage
    + DataCenter
    + DataMining
    + Datawarehouse
    + Décisionnel
    + Déploiement
    + Développement
    + DNS
    + Embarqué
    + Embedded
    + Enquête
    + Evènement
    + Exchange Server
    + Gestion des tâches
    + Green IT
    + Groove
    + Hardware
    + Haute Disponibilité
    + Hyper-V
    + i
    + IASP
    + IDE
    + Industrialisation
    + Infrastructure
    + Intranet
    + ISA Server
    + iSeries Navigator
    + Livre Blanc
    + Messagerie
    + Microsoft TechDays 2010
    + Migration
    + MVP
    + Numérique
    + Office
    + Operating System
    + Oracle
    + Ouvrage
    + Partenariat
    + Partenariat
    + PHP
    + PME
    + Poste de travail
    + Power Systems
    + PowerShell
    + PowerSystems
    + Recovery
    + Reporting
    + Reprise d'activité
    + Réseaux
    + Restauration
    + Robotique
    + ROI
    + RPG
    + SaaS
    + Sauvegarde
    + Scripting
    + Sécurité
    + Server
    + SharePoint
    + SOA
    + Solutions
    + SQL Server
    + Stockage
    + Stratégie
    + Supervision
    + System Center
    + TechDays 2010
    + Téléphonie
    + Tests
    + Update
    + Utilisateurs
    + Virtualisation
    + Visual Studio
    + vSphere
    + Webcast
    + Webinar
    + WebSphere
    + Windows
    + Windows 7
    + Windows Server
    + Windows Vista
    + Windows XP
    + XML


    Actualités System i
    + Raz-Lee Security et Imperva s'accordent sur une offre pour l...

    + Crypto Complete 2.20 : des chiffrements plus rapides

    + ACMI et IBM partenaires pour l' « IBM Business Partner Dynam...





    La gestion des exigences en 10 étapes clés

    Virtualisation des postes de travail …



    Lettres d'information

    La lettre Windows ITPro + Voir un exemple
    La lettre SQL Server + Voir un exemple
    La lettre Exchange + Voir un exemple
    La lettre System iNEWS + Voir un exemple
    envoyer

    Flux RSS

    Les ressources Windows Server
    Les ressources Exchange Server
    Les ressources SQL Server
    Les ressources System i
    Les Livres Blancs et Hors-Série

    Liens & offres technologiques


    Au sommaire du iT Technical Center

    Optimisation des centres de données avec Microsoft® System Center

    Comment la virtualisation peut simplifier la gestion des postes de travail

    Cahier Spécial : Sécurité & Haute disponibilité System i et Power System

    Développement d'applications Power System, Enjeux & Méthodes

    Téléchargez une édition découverte du mensuel « IT Pro Magazine »

    Annonces Google

    IT Media

    + Le Groupe
    + Les Editions
    + Nous contacter
    + Annoncer sur itpro.fr
    + Mentions légales
    Nos magazines IT

    + IT Pro Magazine
    + Exchange Magazine
    + System iNEWS
    + SQL Server Magazine
    + IT Technical Center
    + IT Download Center
    Les flux RSS

    + Windows Server
    + SQL Server
    + Exchange Server
    + System i
    + Les Livres Blancs et Hors-Série
    + de 2.500 Dossiers Informatiques sur :

    + Windows Server 2000 – 2003 - 2008
    + AS/400 – iSeries - System i - Power System
    + SQL Server 2000 – 2005 - 2008
    + Exchange Server 2000 – 2003 – 2007
    + Hors Séries – Suppléments thématiques
    Ressources IT complémentaires

    + Actualités, veille technologique
    Windows System i Exchange SQL Server
    + Nouveaux produits
    Windows System i Exchange SQL Server
    + iTProeurope.com

    IT Pro MagazineSystems iNEWSExchange MagazineLes ressources SQL Server - IT Technical Center - IT Download Center
    Copyright © 2009 IT Media, Tous droits réservés, toutes les marques citées sur ce site sont des marques déposées de leurs propriétaires respectifs