> Scripting
L’extraction à  la volée

L’extraction à  la volée

Analysis Services a modifié le regard des entreprises sur leurs données. Bien qu’OLAP existait assurément avant que Microsoft ne propose Analysis Services avec SQL Server, le géant de Redmond l’a mis à la portée des entreprises de toutes tailles.Celles-ci peuvent désormais analyser leurs données afin de prendre des décisions plus rapidement, à partir d’informations plus pertinentes. Analysis Services inclut une fonctionnalité appelée « extraction » (ou drillthrough en anglais) qui, une fois activée par les concepteurs de cubes, fournit à l’analyste un moyen d’exploration partant des données du cube pour aller jusque dans les tables relationnelles sous-jacentes. Cette approche permet d’examiner les enregistrements sur lesquels reposent les données visibles dans le cube. Par exemple, si l’enregistrement de cube indique qu’un client a acheté pour 10 000 dollars d’un produit spécifique, vous pouvez effectuer une extraction sur cet enregistrement afin de savoir si le client a passé une seule commande d’un montant de 10 000 dollars ou 10 000 commandes d’un dollar chacune.

L’extraction fonctionne bien dans la majorité des cas, mais elle présente un défaut. Vous ne pouvez pas modifier une requête d’extraction à la volée. Le créateur du cube configure la requête une seule fois pour le cube et celle-ci devient statique. Si vous devez passer des paramètres dans la requête d’extraction, vous ne pouvez pas employer Analysis Services seul. En revanche, vous pouvez créer un rapport d’extraction dans Reporting Services, puis utiliser une action au niveau cellule dans Analysis Services pour appeler le rapport et passer les paramètres appropriés. Cette option est particulièrement utile pour passer un niveau parmi plusieurs d’une dimension en tant que paramètre à une requête d’extraction, sans connaître à l’avance le niveau concerné. Un rapport d’extraction fonctionne également lorsque vous effectuez des comptages et si le champ sur lequel porte l’opération dans la table de faits peut contenir des valeurs NULL.

Lire l'article
Créez votre propre bibliothèque de code

Créez votre propre bibliothèque de code

Les développeurs de base de données ADO.NET utilisent fréquemment les chaînes T-SQL afin de récupérer des données pour leurs applications. Si leur connaissance de la conception d’une base de données et/ou du langage T-SQL est insuffisante, le processus de création des chaînes pour leurs applications peut aboutir à des conceptions d’accès aux données inefficaces, voire à des ensembles de résultats présentant des valeurs erronées.Dans ce type de situation, la réutilisation du code T-SQL dans des objets de base de données tels que des procédures stockées et des fonctions définies par l’utilisateur (UDF) présente des avantages particuliers. Cette approche peut contribuer à simplifier la tâche d’accès aux données et sécuriser le schéma d’une base de données. Un développeur ou DBA confirmé peut préparer une bibliothèque de code T-SQL qui sera ensuite réutilisée par des développeurs débutants ou un peu aguerris pour de nombreuses tâches courantes d’accès aux données. Le développeur ou DBA peut en outre exiger que les applications client se connectent via des comptes de sécurité qui ont le droit d’appeler les procédures stockées et fonctions UDF de la bibliothèque, mais pas nécessairement les objets sous-jacents.

Dans cet article, nous allons étudier les techniques pour le traitement des procédures stockées et des fonctions UDF avec ADO.NET et Visual Basic .NET. Pour ce faire, nous allons utiliser deux exemples d’applications s’appuyant sur les tables Categories et Products de la base de données exemple Northwind. Vous pouvez réaliser une jointure entre ces deux tables sur les valeurs de la colonne CategoryID. Il est possible d’adapter les exemples de code présentés ici afin des les appliquer à toute paire de tables jointes sur une ou plusieurs paires de valeurs de colonne. Les exemples de code T-SQL sont également utiles à un autre titre : ils exposent les techniques pouvant servir à améliorer la réutilisabilité du code.

Ces techniques incluent l’utilisation de paramètres d’entrée, de paramètres de sortie et de valeurs d’état de retour avec des procédures stockées, ainsi que la mise en oeuvre de valeurs scalaires et de valeurs de type table retournées par les fonctions UDF. En apprenant ces techniques et en les appliquant dans vos applications, vous décuplerez la réutilisabilité du code T-SQL dans vos procédures stockées et fonctions UDF. (Vous pouvez cependant appliquer les techniques Visual Basic .NET présentées dans cet article avec n’importe quel langage .NET qui met en oeuvre la programmation ADO.NET, tel que C#).

Lire l'article
Visualiser les données à  partir de WDSC

Visualiser les données à  partir de WDSC

En pensant « WDSc », beaucoup pensent aussi « Ah oui, c’est ce qui me permet de coder mes programmes RPG au lieu d’utiliser PDM/SEU ». Bien vu ! Mais WDSc (WebSphere Development Studio client), ou peut-être plus précisément la RAD (Rational Software Development) plate-forme animée par Eclipse, va bien au-delà d’un coding sympa en RPG. Du développement de programmes RPG et d’applications Web à l’utilisation d’un générateur d’applications (comme Enterprise Generation Language ou EGL) et à l’exploration des bases de données où qu’elles se trouvent, les outils dont dispose WDSc peuvent remplir la mission.Cet article se concentre sur Data perspective de WDSc. Cependant, si vous faites tout le travail de base de données sur l’i5 avec des fichiers physiques et logiques provenant de DDS, il n’y a peutêtre pas là pour vous grand-chose de substantiel. Mais si vous utilisez SQL pour construire et maintenir des bases de données, ou si vous envisagez d’utiliser WDSc pour d’autres genres de développement applicatif que RPG (par exemple, applications Java, EGL d’IBM), alors la Data perspective deviendra rapidement votre amie.

Lire l'article
Extraire les informations d’une page Web

Extraire les informations d’une page Web

Les administrateurs Windows doivent parfois extraire des informations spécifiques d’un document HTML. Ce peut être un fichier local, une page d’état sur un périphérique réseau du LAN, un rapport de base de données consultable sur le Web, ou une infinité d’autres types de pages. Dans tous les cas, l’utilisation des données provenant de ces sources pose deux problèmes.Le premier est de se connecter à la page Web et de lire les données qu’elle contient. Si une page n’est pas un fichier statique accessible par un share ou système de fichiers Windows situé quelque part sur le réseau géré, nous ne pouvons pas utiliser d’outils standard tels que l’objet Scripting.FileSystemObject pour le lire. Nous serons même parfois amenés à fournir un nom et un mot de passe utilisateur à l’unité servant la page Web.
Une fois ce problème résolu, vient le second encore plus ardu : comment extraire fiablement le petit bout d’information dont nous avons besoin à partir d’un HTML brut virtuellement illisible ? Ces deux problèmes peuvent être résolus grâce aux composantes standard présentes sur toute station de travail de type WSH (Windows Script Host) et un peu de réflexion. Je vais démontrer le processus général en analysant un script de démo qui contient une page Web d’un routeur DSL et extrait l’adresse IP publique du routeur.
Ensuite, je distillerai le processus en trois fonctions génériques permettant d’extraire des informations spécifiques d’une grande variété de pages. Dans mon propos, les mots informations et données ont chacun une signification particulière. Par informations, j’entends la chose particulière que nous voulons trouver – dans ce cas, l’adresse IP publique du routeur. Par données, j’entends le matériau de page brut qui contient les informations ainsi que les éléments sans intérêt qu’il convient de supprimer.

Lire l'article
Les API à  l’oeuvre – avec des JOBS

Les API à  l’oeuvre – avec des JOBS

Il n’est pas si facile de mettre les API au travail. En effet, elles renvoient des données en différents formats, par diverses méthodes, et certaines API ont des listes de paramètres complexes. En outre, il n’est pas toujours facile de percevoir immédiatement le sens d’un message d’erreur. Cependant, au fur et à mesure que vous gagnerez en expérience, vous saurez où commencer à chercher l’information et comment régler les difficultés en cours de route.En particulier, les API Open List offrent de riches fonctions et des paramètres de filtrage nombreux et efficaces, qui vous permettent de braquer le projecteur sur le sous-ensemble exact d’entrées de liste que votre programme ou utilitaire vise. Ces API ont aussi un paramètre d’information de tri, permettant de trier la liste obtenue d’après tous les critères imaginables. Mieux encore, vous pouvez spécifier quels champs l’API devrait renvoyer dans ces paramètres de données de renvoi, pour lui éviter de gaspiller des cycles de CPU à extraire des informations sans intérêt. Finalement, les API Open List peuvent construire la liste ouverte de manière asynchrone en arrièreplan. Vous pouvez donc démarrer le traitement de la liste avant qu’elle soit terminée, afin que la construction et le traitement de la liste aient lieu en parallèle, pour accélérer l’ensemble du processus.

A l’origine, IBM a créé les API Open List pour supporter des applications client/serveur et elle s’est efforcée de les rendre aussi souples et fonctionnelles que possible. System i Navigator est un exemple d’application client qui bénéficie des API Open List. (Il est important de noter que, avant la release V5R3, les API Open List faisaient toutes partie de Host Server (5722-SS1 option 12) du système d’exploitation et étaient situées dans la bibliothèque QGY. A partir de la V5R3, les API Open List ont été intégrées dans l’OS de base. Si vous travaillez sur une version V5R2 ou antérieure, vous pouvez utiliser la commande Display Software Resources (DSPSFWRSC) pour vérifier que l’option 12 est installée.)

Autre exemple, la commande Work with Jobs (WRKJOBS), que j’utilise ici pour vous faire couvrir les étapes nécessaires pour mettre l’API Open List of Jobs (QGYOLJOB) au travail. (Pour une liste des sources utilisées pour créer la commande WRKJOBS, voir l’encadré « Spécification des sources »).

Lire l'article
Les API : guide pour débutants

Les API : guide pour débutants

Au stade actuel de mon parcours professionnel, il est rare que j’écrive une seule application sans y incorporer une API. Je vous entends déjà : comment est-ce possible ? Quel genre de masochiste utiliserait des API dans chaque programme? D’accord, je constitue peut-être un cas particulier, mais j’ai constaté que les API confèrent à mes programmes un degré de souplesse, d’élégance et surtout de puissance, dont les techniques classiques sont incapables.Et je ne suis pas le seul à penser ainsi – l’encadré « Les 10 principales raisons d’utiliser des API » résume la façon dont les développeurs utilisent aujourd’hui les API. Ici, j’ai bien l’intention de porter la bonne parole à propos des API et de vous apprendre à les utiliser pour la première fois. Peut-être les aimerez- vous aussi !

Lire l'article
CLR : un potentiel à  découvrir

CLR : un potentiel à  découvrir

Dans l’article « SQL Server : retour vers le futur » (www.itpro.fr), j’explique que les données sont au coeur de la majorité des systèmes informatiques modernes et que SQL Server 2005 va estomper les frontières traditionnelles du modèle d’applications multiniveaux. L’un des facteurs clé du changement de notre vision des niveaux d’une architecture informatique est l’inclusion du Common Language Runtime (CLR) dans SQL Server 2005.Cette fonctionnalité est l’une des plus commentées du nouveau produit et les avis positifs ou négatifs à son sujet sont très marqués, allant des utilisateurs qui souhaitent la désactiver ad vitam aeternam aux utilisateurs qui veulent l’employer à toutes les sauces. Les réactions à l’intégration du CLR dans SQL Server 2005 sont intéressantes. Alors qu’un membre de l’équipe de développement SQL Server effectuait une présentation sur l’intégration du CLR, une personne de l’assistance s’est levée et a crié « T-SQL est-il mort ? ». Cette question nous a incité à mettre en place une session spécifique intitulée « Non, T-SQL n’est pas mort ! ». A l’inverse, j’ai eu une conversation avec un programmeur ASP qui venait de découvrir l’intégration du CLR SQL Server et a déclaré d’emblée qu’il constituerait un emplacement remarquable pour stocker tous les assemblys .NET destinés à son site Web.

Lire l'article
Des merveilles en une ligne

Des merveilles en une ligne

Imaginez qu’une seule ligne de code suffise pour créer un outil d’administration système. Et bien c’est possible avec les scripts WMI (Windows Management Instrumentation). Comme le montre le renvoi A du listing 1, vous pouvez écrire une ligne de code qui affichera l’état du service Windows Alerter. (Bien que le renvoi A mette en évidence deux lignes, VBScript les interprète comme une seule ligne de code, en raison du trait de soulignement qui termine la première ligne. Nous sommes obligés d’étaler le code sur deux lignes en raison des largeurs de colonnes à l’impression.) Le renvoi B montre un script d’une ligne qui permet d’arrêter ou de démarrer le service Alerter.

Lire l'article
Boîte à  outils System iNEWS : Trouver des commandes

Boîte à  outils System iNEWS : Trouver des commandes

Bien que la convention de nommage des commandes OS/400 i5/OS soit logique, il n’est pas facile de trouver le nom approprié. Voici quelques moyens permettant de trouver facilement la commande souhaitée : • Entrer SLTCMD *ALL pour afficher la liste de toutes les commandes • Entrer GO CMDxxxx, où xxxx est un ou plusieurs caractères, […]

Lire l'article
Analyser les méthodes d’accès aux données

Analyser les méthodes d’accès aux données

Dans la nouvelle architecture de type RISC introduite en V4R1/V3R6, IBM a ajouté au système d’exploitation de nouveaux collecteurs de données de performances. Ces collecteurs fournissent les données brutes destinées à une variété d’applications et d’outils d’analyse SQL. Cela inclut la suite d’outils IBM iDoctor (comme Job Watcher, PEX Analyzer) et l’outil IBM SQL Visual Explain, qui fait partie de iSeries Navigator.Ces outils permettent de développer des applications efficaces, que ce soit sous SQL ou par des méthodes d’accès aux données traditionnelles. Malheureusement, dans beaucoup d’entreprises, les développeurs (a) ne connaissent pas l’existence de ces outils, (b) n’ont pas le droit d’y accéder, (c) ne comprennent pas la sortie fournie par eux, ou (d) cumulent les trois handicaps ci-dessus.

Dans cet article et plusieurs autres à suivre, je démontrerai comment ces outils contribueront à la modernisation des bases de données. En particulier, je décrirai l’utilisation du collecteur de statistiques PEX (Performance Explorer) pour l’analyse d’accès aux données traditionnelle et l’utilisation du Database Monitor pour l’analyse d’accès aux données SQL.

Lire l'article
Tirer sur le déclencheur d’évènements

Tirer sur le déclencheur d’évènements

Les journaux d’événements sont d’excellents outils pour suivre à la trace la marche de votre système. Mais ils ont un point faible : il faut les consulter pour savoir si quelque chose d’important s’est produit. Presque tous les administrateurs Windows que je connais ont, un jour ou un autre, passé des heures à tirer au clair un étrange comportement du système pour, finalement, penser à consulter les journaux d’événements, … et y trouver la réponse. Mais supposez que certains genres d’événements soient tellement importants que vous vouliez pouvoir les traiter sans être obligés de consulter les journaux d’événements. Si seulement vous pouviez configurer le système de telle sorte qu’il réagisse immédiatement à certains événements !C’est tout à fait possible avec un déclencheur d’événement. Un tel dispositif dit en substance à votre système : « Quand cet événement se produit, exécuter ce programme ». Supposons que vous soyez sur la piste d’un pirate et que vous vouliez être informés de chaque défaillance de logon. Vous pourriez créer un déclencheur d’événement pour utiliser Net Send chargé de vous délivrer un message pop-up ou pour utiliser un programme comme Blat pour vous envoyer un message e-mail à partir d’une ligne de commande. Mais comment créer un déclencheur d’événement ? En utilisant eventtriggers.exe, qui est incluse dans Windows Server 2003 et Windows XP.

Lire l'article
Diagnostics SQL : premier contact

Diagnostics SQL : premier contact

 Les programmeurs rompus aux langages évolués (HLL), tels que RPG et Cobol, ont parfois du mal à diagnostiquer des erreurs en SQL. Cette difficulté est due d’une part à la syntaxe différente de SQL et, d’autre part, à sa « philosophie » elle aussi différente, qui exige que le programmeur spécifie ce qui doit être fait et laisse à l’optimiseur de requêtes SQL le soin de décider comment le faire. C’est pourquoi, dans cet article, je fournis aux programmeurs débutant en SQL quelques principes et conseils de base pour aborder ce genre de problèmes.

Lire l'article
Quand de bons scripts dérapent

Quand de bons scripts dérapent

Vous venez de passer des heures à écrire un script chargé de supprimer automatiquement les anciens comptes utilisateur inactifs dans l’AD (Active Directory). Bien que vous soyez débutant en code VBScript, la suppression manuelle des anciens comptes d’AD chaque mois était une telle corvée que vous vous êtes résolu à écrire ce script. Plein d’espoir, vous l’exécutez sur votre réseau de test… pour le voir s’arrêter prématurément. Pas croyable ! Où est l’anomalie ? Les raisons sont multiples. Cependant, le principe de Pareto (c’est-à-dire, la règle des 80/20) veut que la plus grande partie des erreurs de script (80 % environ) provient d’un petit nombre de causes possibles (20 % environ).Plusieurs experts en scripting ont récemment parlé des erreurs courantes qu’ils trouvent quand ils examinent le code VBScript sur le terrain. D’après ces experts et à en croire divers articles, les erreurs de syntaxe VBScript les plus courantes (c’est-à-dire, celles qui surviennent quand le code transgresse les règles grammaticales du langage VBScript) et les erreurs à l’exécution (c’est-à-dire, les erreurs qui se produisent quand un script tente d’effectuer une action que le système ne peut pas exécuter) surviennent quand les auteurs de scripts utilisent des variables, des instructions de traitement d’erreurs, des guillemets et des caractères spéciaux et réservés.

Lire l'article
19 étapes vers un meilleur style CL

19 étapes vers un meilleur style CL

Derrière tout bon programme RPG, on trouve un programme CL. Il est généralement court et ciblé. Il définit les overrides, les paramètres, les chemins de fichiers, et les résultats de requêtes, puis il appelle le programme RPG. Parfois, le programme CL sera plus long et plus complexe, jusqu’à contrôler le flux d’une application ou de tout un système. Dans un environnement ILE, on peut packager un processus CL comme une procédure fréquemment utilisée dans un programme ou un programme de service.

Dans la réalité, les programmes CL sont souvent courts et généralement écrits après leur programme RPG compagnon. C’est pourquoi il est facile de sous-estimer le style, les standards, et les meilleures pratiques CL. Or, les programmes CL méritent autant un bon style et de bons standards que leurs homologues écrits en RPG ou tout autre langage.Les recommandations de style posent un problème particulier en CL à cause des fonctions d’invite (prompteur) intégrées dans le système d’exploitation. Il est facile d’utiliser l’invite (F4) pour afficher les paramètres et valeurs valides quand on ne connaît pas les exigences d’une commande. Et le code CL résultant est certainement constant. En effet, il est constamment laid, constamment illisible, constamment difficile à comprendre, et constamment « surchargé en guillemets ». Bien que, à court terme, il soit plus rapide de créer un programme CL opérationnel en utilisant le prompteur, une vue à plus long terme – prenant en compte les futures considérations de maintenance – exige que vous consacriez un peu plus de temps supplémentaire dès à présent à réaménager le code pour respecter les bons standards. L’avantage sera triple : gain de temps, moins de risque et moins d’erreurs en cours de route. Cela étant posé, voici 19 conseils pour écrire un code CL élégant.

Lire l'article
MONAD : les fonctions vedettes !

MONAD : les fonctions vedettes !

A l’horizon Windows, l’un des changements les plus passionnants est le nouvel environnement de script, en chantier chez Microsoft. Il promet tout simplement de révolutionner le scripting Windows. Ce nouvel environnement a deux parties : un nouveau shell ligne de commande, sous le nom de code MSH (Microsoft Scripting Host) et un nouveau langage script, dont le nom de code est Monad. Le shell de commande se présente comme une invite de commande Windows, mais là s’arrêtent les similitudes entre l’ancien et le nouveau shell de commande.En effet, le nouvel environnement script Windows est complètement moderne. Microsoft envisage d’inclure Monad dans Longhorn, mais il pourrait aussi être proposé dans les versions actuelles de Windows. Découvrons les 10 fonctions les plus saillantes du nouveau langage script.

Lire l'article
Encore d’autres déclencheurs d’événements

Encore d’autres déclencheurs d’événements

Dans l’article « Tirer sur le déclencheur d’événements », mars 2005, je présentais les déclencheurs d’événements une fonction de Windows Server 2003, Windows XP et Windows 2000, qui permet de configurer l’OS afin qu’il exécute certains programmes quand certains ID d’événements se produisent. Ce mois-ci, bouclons notre discussion sur eventtriggers.exe en nous intéressant à d’autres options.

Lire l'article
Enfin une solution de sauvegarde automatisée souple !

Enfin une solution de sauvegarde automatisée souple !

En présentant Windows 2000, Microsoft a rénové l’utilitaire de sauvegarde intégré NTBackup et a ajouté des possibilités de gestion de médias et de planification. Bien que ces mises à jour soient les bienvenues, j’ai lu dans des forums Web et dans des newsgroups, des commentaires indiquant que bon nombre d’administrateurs et d’autres utilisateurs avaient eu du mal à faire fonctionner NTBackup.Dans ma société, nous avons utilisé un logiciel de sauvegarde tierce partie sur Windows NT 4.0, parce que l’outil NTBackup de NT 4.0 n’était pas à la hauteur de nos besoins. Quand nous sommes montés d’un cran pour passer à Windows Server 2003, j’ai examiné à nouveau NTBackup pour voir si la version remaniée serait suffisamment puissante et si elle serait facile à automatiser. Cet examen m’a permis de découvrir quelques lacunes de NTBackup:

• Il n’existe pas de moyen simple d’écrire une sauvegarde sur une bande arbitraire, sauf à utiliser l’option /um (unmanaged) sur la ligne de commande. Cette option permet d’écraser le contenu d’une bande arbitraire. Malheureusement, quand NTBackup fait cela dans un job de sauvegarde, il applique toujours un nouveau label de média – soit un label de votre cru, soit un label générique fondé sur la date et l’heure courantes. Aucun moyen intégré ne permet d’ordonner à NTBackup d’écraser la bande tout en conservant le label actuel.
• Il n’existe pas de moyen simple d’ajouter une information de sauvegarde à une bande insérée, parce qu’il faut utiliser l’une des deux options /t (tape name) ou /g (globally unique identifier – GUID) sur la ligne de commande. Le mode unmanaged ne fonctionnera pas parce qu’on ne peut ajouter qu’à une bande nommément désignée.
• NTBackup ne peut pas éjecter une bande après une sauvegarde.
• NTBackup ne peut ni envoyer par e-mail, ni imprimer les journaux de job obtenus.

Pour pallier ces insuffisances, j’ai créé un ensemble de scripts dont la liste figure dans le tableau Web 1 (http://www.itpro.fr Club abonnés). L’ensemble comporte un script principal et 13 scripts de soutien. Le script principal, Backup.cmd, utilise NTBackup pour effectuer une sauvegarde qui écrase la bande courante mais ne change pas son label de média. Les 13 scripts de soutien effectuent diverses fonctions pour le compte de Backup. cmd. L’ensemble de ces scripts offre une solution de sauvegarde facile à personnaliser et à utiliser. Pour les exécuter, aucune expérience d’écriture de script n’est nécessaire. Il suffit de suivre ces étapes :

1. Bien comprendre ce que chaque script de soutien accomplit, afin de pouvoir personnaliser une solution.
2. Comprendre comment le script principal fonctionne, de manière à pouvoir le personnaliser.
3. Préparer l’environnement et les scripts.

Lire l'article
Imprimer dans CGI

Imprimer dans CGI

Comme son nom l’indique, un navigateur Web est chargé de naviguer sur le Web et d’afficher les données sous forme graphique. Bien que l’on puisse imprimer des pages Web en utilisant le bouton Imprimer du navigateur, les fonctions d’impression (comme les en-têtes de pages pour chaque page imprimée) ne peuvent pas être homogènes sur l’ensemble des navigateurs parce que chaque navigateur et client peut avoir des imprimantes et des paramètres très différents : marges, pieds de pages, en-têtes, et autres. De plus, la taille de chaque page Web est variable selon le type d’entrée et de données. Par conséquent, si vous êtes amenés à imprimer la sortie d’un navigateur Web, il vaut mieux recourir à un rapport traditionnel créé par un job batch.Pour qu’un navigateur Web affiche la sortie imprimée, il faut d’abord convertir le fichier spool en format PDF. Il existe un outil permettant cette conversion, à www-92.ibm.com/en. On peut aussi utiliser à cet effet les outils CGIDEV2 ou MMAIL.

MMAIL facilite l’envoi électronique et la conversion des fichiers spool, des fichiers MIME, des fichiers stream (fichiers IFS), des fichiers save, et des membres de fichiers source. Elle possède aussi une commande (CVTSTMFPDF) pour convertir un fichier spool en PDF, HTML ou texte. Si vous envisagez d’imprimer à partir du navigateur client, vous devez convertir le fichier en format PDF.

Le répertoire de destination sur l’IFS doit être accessible à partir d’un navigateur Web. La configuration par défaut de l’outil CGIDEV2 permet au navigateur Web d’accéder au répertoire CGIDEV. Pour plus d’efficacité, je suggère de créer un sous-dossier dans le dossier CGIDEV ou un dossier IFS séparé, pour stocker les fichiers PDF. Utilisez la commande CHGAUT pour accorder l’autorité au dossier créé. *PUBLIC a besoin de l’autorité *RX. QTMHHTP1 et QTMHHTTP ont besoin de l’autorité *RWX et des autorités de données *OBJMGT, *OBJEXIST, *OBJALTER et *OBJREF.

Lire l'article
Faciliter les fermetures à  distance

Faciliter les fermetures à  distance

Même si les outils de Microsoft sont de plus en plus conviviaux pour l’administrateur, au fil des versions de Windows, beaucoup présentent encore des limitations. Je n’en veux pour exemple que le vénérable utilitaire Shutdown que Microsoft a fini par intégrer dans l’OS dans Windows XP et a mis à jour pour Windows Server 2003. Shutdown permet de réinitialiser, de fermer ou de mettre hors tension un PC.Cependant, Shutdown souffre de limitations qui le rendent un peu juste pour une utilisation professionnelle d’entreprise. Par exemple :

 • Shutdown ne fournit aucune possibilité de test. Pour déterminer si l’on peut fermer (ou arrêter) un système, il faut le fermer avant d’exécuter l’utilitaire Shutdown.
• Shutdown ne permet de spécifier qu’un ordinateur à fermer chaque fois qu’on l’exécute.
• Shutdown ne permet pas de s’authentifier auprès d’un système distant qui requiert la sécurité au niveau PKI (public key infrastructure).
 • Shutdown ne permet pas de spécifier un compte privilégié à utiliser pour effectuer une fermeture.

Pour pallier ces insuffisances, j’ai créé un utilitaire de fermeture – le script VBScript StopComputer – destiné aux cas d’entreprises face auxquels l’outil Windows Shutdown est déficient. StopComputer utilise la méthode Win32 Shutdown de la classe Win32_OperatingSystem de WMI (Windows Management Instrumentation). Cette méthode permet de fermer, de réinitialiser ou de déconnecter un ordinateur d’un script. Nous allons donc examiner pas à pas l’utilitaire StopComputer pour que vous compreniez son fonctionnement et son mode d’utilisation. StopComputer fonctionne avec Windows 2000 et supérieur, dans la configuration livrée de l’OS. Vous pouvez aussi l’utiliser avec des systèmes Windows NT Server 4.0 si vous installez les extensions WMI sur les systèmes que StopComputer doit fermer. Pour exécuter l’utilitaire, il faut que Windows Script Host (WSH) 5.6 ou version ultérieure soit installé.

StopComputer a quelques limitations. Il ne permet pas de spécifier directement fermetures, et il n’envoie pas ses propres messages réseau. Aussi, par mesure de sécurité, vous ne pouvez pas appliquer l’utilitaire à l’ordinateur local (c’est-àdire, le système sur lequel StopComputer fonctionne). En tant que script de traitement batch, cependant, Stop- Computer est facile à intégrer aux autres outils qui effectuent ces tâches. Vous pourriez aussi personnaliser StopComputer en ajoutant les composants qui assurent la journalisation (pour indiquer les raisons de la fermeture) et la messagerie réseau.

Lire l'article
Développer des API RPG réutilisables

Développer des API RPG réutilisables

J’ai passé les premières années de ce siècle à développer des frontaux Web basés sur Java, destinés à d’anciennes applications iSeries. En interfaçant Java et RPG, mes clients voulaient bénéficier de la richesse du code en place et de la puissance des codeurs existants. Mais, pour bien coder le côté Java de cette interface, les développeurs Web ont besoin d’une API intuitive et simple à utiliser, ayant fait ses preuves. Malheureusement, nous n’obtenons souvent qu’un code non testé et sauvage.Le problème est double :

1. L’ancien code n’a pas été écrit à l’aide de composantes de logiciel réutilisables.
2. Les codeurs à l’ancienne ne savent peut-être pas comment réaménager le code existant ou comment écrire le nouveau sous forme de composantes logicielles réutilisables.

Je fournis ici une liste de standards que les développeurs RPG pourront utiliser pour créer une API à base de composantes (CBD, component-based developed).

Lire l'article