Cours NetRexx

Formation Complet Guide de programmation NetRexx en PDF


Télécharger Formation Complet Guide de programmation NetRexx en PDF

★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :


Formation Complet Guide de programmation NetRexx [Eng]

...

introduction

Le guide de programmation est le livre qui a le plus large éventail de publications dans la série de programmation NetRexx. Lorsque la référence du langage et les QuickBeginànings doivent être limités à une description formelle et à la définition du langage NetRexx pour le premier, et à des instructions rapides pour l'installation et la visite de ce dernier, ce livre n'a pas de telles limitations. Il enseigne la programmation, discute de l'histoire du langage informatique et de la linguistique comparée, et montre de nombreux exemples sur la façon de faire fonctionner NetRexx avec diverses technologies telles que TCP / IP, systèmes de gestion de bases de données relationnelles, systèmes de messagerie et de mise en file d'attente (JQEE). Apaplication ServerTM, décrit diverses options d'interface utilisateur graphique client riche et léger, et explique comment utiliser NetRexx sur diverses plates-formes d'exploitation. Pour de nombreuses personnes, la meilleure façon d'apprendre est d'utiliser des exemples plutôt que des spécifications. Pour cette raison ce livre est riche en exemple de code, qui fait partie de la distribution NetRexx, et testé et maintenu. Cela a eu un effet sur le volume de ce livre, ce qui signifie que contrairement aux autres publications de la série, ce n'est probablement pas une bonne idée de l'imprimer dans son intégralité; sa taille le relèvera à être utilisé électroniquement.

Terminologie

La référence de langage NetRexx (NRL) est la source de la vérité définitive sur la langue. Dans ce Guide de programmation, la terminologie est parfois utilisée plus librement que nécessaire pour l'approche plus formelle du LNR. Par exemple, il y a une ligne fine, une instruction, une instruction et une clause, où ce dernier est un concept plus proche de Rexx, qui n'est pas souvent mentionné par rapport aux autres langages (s'ils ne sont pas COBOL ou SQL). Tandis que nous essayons de ne pas créer de confusion, la clause et la déclaration seront utilisées de manière interchangeable, tout comme l'instruction et l'instruction par mot-clé.

Remerciements

Comme ce livre est un recueil de décennies de connaissances Rexx et NetRexx, il repose sur les épaules de beaucoup de ses prédécesseurs, dont beaucoup ne sont plus disponibles sous forme imprimée dans leur forme originale, ou ne seront jamais améliorés ou actualisés; Nous sommes redevables à beaucoup d'auteurs anonymes (parce que non reconnus dans les publications originales) de la documentation produit d'IBM, et beaucoup d'autres que nous connaissons, et nous remercierons dans ce qui suit. Si quelqu'un connaît un nom qui n'est pas mentionné ici, veuillez le contacter.

Une grosse reconnaissance de dette est adressée à Alan Sampson, qui a contribué à lui seul plus d'une centaine d'exemples de programmation NetRexx. Les auteurs de Redbook (Peter Heuchert, Frederik Haesbrouck, Norio Furukawa, Ueli Wahli, Kris Buelens, Bengt Heijnesson, Dave Jones et Salvador Torres) ont fourni des documents importants qui ont montré, à un stade précoce, à quel point presque tout sur la JVM est meilleur. et plus facile à faire dans NetRexx. Kermit Kiser a également fourni des exemples et a fait l'entretien du traducteur. Si quelqu'un a l'impression que son droit d'auteur est violé, faites le nous savoir afin que nous puissions supprimer des passages offensants ou les paraphraser au-delà de la reconnaissance. Comme l'utilisation de tout le matériel de cette publication est citée à des fins éducatives et consiste en de courts fragments, une clause d'utilisation équitable s'appliquera dans la plupart des juridictions.

Rencontrez la famille Rexx

1.1 Une fois sur une machine virtuelle

Le 22 mars 1979, pour être précis, Mike Cowlishaw d'IBM avait une vision d'un processeur de commande plus facile à utiliser pour VM, et a écrit une spécification au cours des jours suivants. VMTM (maintenant appelé z / VM) est le système d'exploitation original de la machine virtuelle, issu d'une époque où le partage du temps était reconnu comme la vague du futur et des systèmes comme CTSS (sur IBM 704) et TSS (sur IBM). 360 Family of computers) étaient les premiers systèmes de partage de temps, qui offraient à l'utilisateur l'illusion d'avoir une grande machine à leur usage exclusif, mais ne permettaient pas de virtualiser l'ensemble du matériel. Le système CP / CMS a changé cela; CP a virtualisé complètement le matériel et CMS était le système d'exploitation fonctionnant sur CP. CMS connaissait une succession d'interpréteurs de commandes, appelés EXEC, EXEC2 et RexxTM (à l'origine REX - jusqu'à ce qu'IBM Legal interfère) - les racines d'EXEC sont l'explication pour laquelle certaines personnes se réfèrent à un programme NetRexx en tant qu'exécutif. , ¬. Comme un excellent exemple de backronym, Rexx signifie «Restructured Extended Executor». On peut affirmer que Rexx est apparu comme une réaction sur EXEC2, mais il faut noter que les deux interprètes de commande ont voyagé à peu près au même moment. A partir de 1988, Rexx était disponible sur MVS / TSO et d'autres systèmes, comme DOS, Amiga et divers systèmes Unix. Rexx a été identifié comme le langage officiel des procédures SAA et a été implémenté sur tous les systèmes d'exploitation d'IBM; la plupart des gens ont appris à connaître Rexx sous OS / 2. À la fin des années quatre-vingt, le successeur Object-Object de Rexx, Object Rexx, a été conçu par Simon Nash et ses collègues du laboratoire IBM Winchester. Rexx a ensuite été connu sous le nom de Classic Rexx. Plusieurs versions open source de Classic Rexx ont été réalisées au fil des années, dont Regina est un bon exemple.

1.2 Une fois sur une autre machine virtuelle

En 1995, Mike Cowlishaw a porté JavaTM sur OS / 2TM et peu après a commencé avec une expérience pour exécuter Rexx sur la JVMTM. Rexx étant généralement considéré comme le premier des langages de script généraux, NetRexx TM est le premier langage alternatif pour la JVM. La version 0.50, datée d'avril 1996, contenait les classes d'exécution NetRexx et un translecteur écrit en Rexx mais atomisé et transformé en exécutable OS / 2. La version 1.00 est disponible depuis janvier 1997 et contient un traducteur bootstrappé sur NetRexx. Le type de chaîne Rexx qui peut également gérer des nombres de précision illimités s'appelle Rexx en Java et NetRexx. Là où Classic Rexx se positionnait comme un langage de collage de système et un langage macro d'application, NetRexx est considéré comme la seule langue capable de tout faire, fournissant des programmes de niveau système ou de grandes applications.

La version 2.00 est devenue disponible en août 2000 et constituait une mise à niveau majeure, dans laquelle l'exécution interprétée a été ajoutée. Jusqu'à cette version, NetRexx ne connaissait que la compilation à l'avance (AOT).



Mike Cowlishaw a quitté IBM en mars 2010. IBM a annoncé le transfert du code source de NetRexx à la Rexx Language Association (RexxLA) le 8 juin 2011, 14 ans après la publication de la version 1.0.

Le 8 juin 2011, IBM a diffusé le code source NetRexx à RexxLA sous licence Open Source ICU. RexxLA peu après publié cela comme NetRexx 3.00 et a suivi avec des mises à jour.

1.3 Caractéristiques de NetRexx

Facilité d'utilisation Le langage NetRexx est facile à lire et à écrire car de nombreuses instructions sont des mots anglais significatifs. Contrairement à certains langages de programmation de niveau inférieur qui utilisent des abréviations, les instructions NetRexx sont des mots courants, tels que say, ask, if ... then ... else, do ... end et exit.

Format libre Il existe peu de règles sur le format NetRexx. Vous n'avez pas besoin de démarrer une instruction dans une colonne particulière, vous pouvez également ignorer des espaces dans une ligne ou ignorer des lignes entières, vous pouvez avoir une instruction sur plusieurs lignes ou avoir plusieurs instructions sur une ligne, les variables n'ont pas besoin d'être pré- défini, et vous pouvez taper des instructions dans les majuscules, les minuscules ou les majuscules.

Fonctions intégrées pratiques NetRexx fournit des fonctions intégrées qui effectuent diverses opérations de traitement, de recherche et de comparaison pour le texte et les chiffres. D'autres fonctions intégrées fournissent des capacités de formatage et des calculs arithmétiques.

Facile à déboguer Lorsqu'un exec NetRexx contient une erreur, les messages avec des ex-planations significatives sont affichés à l'écran. De plus, l'instruction trace fournit un puissant outil de débogage.

Interprété Le langage NetRexx est un langage interprété. Lorsqu'un exec NetRexx s'exécute, le processeur de langage interprète directement chaque instruction de langage ou traduit le programme dans le bytecode JVM.

Capacités d'analyse étendues NetRexx inclut des capacités étendues d'analyse pour la manipulation de caractères. Cette fonctionnalité d'analyse vous permet de définir un motif pour séparer les caractères, les nombres et les entrées mixtes.

Utilisation transparente des bibliothèques de classes JVM NetRexx peut utiliser n'importe quelle classe et bibliothèque de classes pour la JVM (écrite en Java ou dans d'autres langages JVM) de manière transparente, c'est-à-dire sans avoir besoin de déclarations ou de définitions supplémentaires dans le code source.

Apprendre à programmer

2.1 Programmes basés sur la console

Une façon dont un ordinateur peut communiquer avec un utilisateur est de poser des questions et ensuite de traduire les résultats en fonction des réponses tapées. En d'autres termes, l'utilisateur a une conversation avec l'ordinateur. Vous pouvez facilement écrire une liste d'instructions NetRexx qui mènera une conversation. Nous appelons une telle liste d'instructions un programme. La liste suivante montre un exemple de programme NetRexx. L'exemple de programme demande à l'utilisateur de donner son nom, puis lui répond par son nom. Par exemple, si l'utilisateur tape le nom Joe, la réponse Hello Joe est affichée. Ou bien, si l'utilisateur ne tape rien, la réponse Hello étranger est affichée. Nous allons d'abord discuter de la façon dont cela fonctionne; alors vous pouvez l'essayer par vous-même.

Listing 2.1: Bonjour Stranger

1 / * Une conversation * /

2 dites "Bonjour, comment vous appelez-vous?"

3 qui = demander

4 si who = '' alors dites "Hello étranger"

5 autrement dit "Bonjour" qui

Brièvement, les différentes parties de l'exemple de programme sont:

/ * ... * / Un commentaire expliquant ce qu'est le programme. Où les programmes Rexx

sur plusieurs plates-formes doit commencer par un commentaire, ce n'est pas une exigence

NetRexx plus. Pourtant, c'est une bonne idée de commencer chaque programme avec un commentaire

cela explique ce qu'il fait.

Dis une instruction pour afficher Bonjour! Quel est votre nom? sur l'écran.

demander Une instruction pour lire la réponse entrée du clavier et la mettre dans la mémoire de l'ordinateur.

Le nom donné à l'endroit en mémoire où la réponse de l'usager est mise.

si Une instruction qui pose une question.

qui = = Un test pour déterminer si qui est vide.

puis une direction pour exécuter l'instruction qui suit, si la condition testée est vraie.

Dis une instruction pour afficher Bonjour étranger sur l'écran.

else Une autre direction pour exécuter l'instruction qui suit, si le test testé

La dition n'est pas vraie. Notez que dans NetRexx, d'autres doivent être sur une ligne distincte.

Dis une instruction pour afficher Bonjour, suivi de tout ce qui est dans qui sur l'écran.

Le texte de votre programme doit être stocké sur un disque auquel vous avez accès avec

aide d'un programme d'éditeur. Sous Windows, notepad ou (notepad ++), jEdit, X2 ou SlickEdit

 sont des candidats appropriés. Sur les systèmes basés sur Unix, y compris MacOSX, vim ou emacs sont des éditeurs plausibles. Si vous êtes sur z / VM ou z / OS, XEDIT ou ISPF / PDF sont donnés. En savoir plus sur l'édition du code NetRexx au chapitre 23.1, Support de l'éditeur, à la page 63.

Lorsque le texte du programme est stocké dans un fichier, disons que nous l'avons appelé hello.nrx, et que vous avez installé NetRexx comme indiqué dans le Guide NetRexx QuickBeginning, nous pouvons l'exécuter avec

nrc -exec bonjour

et cela donnera le résultat:

\ nr processeur portable, version \ nr after3.01, build 1-20120406-1326

Programme hello.nrx



===== Exec: bonjour =====

salut! Quel est votre nom?

Si vous ne voulez pas voir le message de version et de copyright à chaque fois, ce qui serait compréhensible, alors lancez le programme avec:

nrc -exec -nologo bonjour

C'est ce qui est arrivé quand Fred a essayé.

Programme hello.nrx

===== Exec: bonjour ===== Bonjour! Quel est votre nom? Fred

Bonjour Fred

L'instruction ask a fait une pause, en attente d'une réponse. Fred a tapé Fred sur la ligne de commande et, quand il a appuyé sur la touche ENTRÉE, l'instruction de demande a mis le mot Fred dans l'endroit dans la mémoire de l'ordinateur appelé "whoâ €", ¬. L'instruction if, est "whoâ € ¢ égal à rien:

qui = à ¢ â,¬Â "¢ à ¢ â,¬Â ¢ ¢

ce qui signifie, est la valeur de "whoâ € (dans ce cas, Fred) égal à rien:

 € "Fred = à ¢ â,¬Â" ¢ à ¢ â,¬Â ¢ ¢

Ce n'était pas vrai. ainsi, l'instruction après alors n'a pas été exécutée; mais l'instruction après, était.

Mais quand Mike a essayé, c'est arrivé:

Programme hello.nrx

===== Exec: bonjour ===== Bonjour! Quel est votre nom?

Bonjour étranger

Traitement de â € ¢ hello.nrxâ € ¢ complet

Mike n'a pas compris qu'il devait taper son nom. Peut-être que le programme aurait dû le rendre plus clair pour lui. De toute façon, il a juste appuyé sur ENTER. L'instruction ask met (rien) dans la mémoire de l'ordinateur appelée "whoâ €". L'instruction if, est:

qui = à ¢ â,¬Â "¢ à ¢ â,¬Â ¢ ¢

ce qui signifie, est la valeur de "whoâ €" égal à rien:

à ¢ â,¬Â ¢ ¢ à ¢ â,¬Â ¢ ¢ à ¢ â,¬â "¢

Dans ce cas, c'était vrai. Ainsi, l'instruction après a été exécutée; mais l'instruction après n'était pas.

2.2 Commentaires dans les programmes

Lorsque vous écrivez un programme, n'oubliez pas que vous voudrez certainement le relire plus tard (avant de l'améliorer, par exemple). Les autres lecteurs de votre programme doivent également savoir à quoi sert le programme, quel type d'entrée il peut gérer, quel type de sortie il produit, et ainsi de suite. Vous pouvez également écrire des remarques sur les instructions individuelles elles-mêmes. Toutes ces choses, les mots qui doivent être lus par les humains mais ne doivent pas être interprétés, sont appelés des commentaires. Pour indiquer quelles sont les commentaires, utilisez:

/ * pour marquer le début d'un commentaire * / pour marquer la fin d'un commentaire.

Le / * fait que le traducteur arrête de compiler et d'interpréter; cela recommence seulement après qu'un * / soit trouvé, qui peut être quelques mots ou plusieurs lignes plus tard. Par exemple,

/ * Ceci est un commentaire. * /

say text / * Ceci est sur la même ligne que l'instruction * / / * Les commentaires peuvent occuper plus

d'une ligne. * /

NetRexx a également des commentaires en mode ligne - ceux-ci tournent une ligne à la fois dans un commentaire. Ils sont composés de deux tirets (traits d'union, dans des listes parfois fusionnées à un tableau de bord typographique - souvenez-vous qu'en réalité ils sont deux n tirets.

- ceci est un commentaire de ligne

2.3 Chaînes

Lorsque le traducteur voit une citation (soit Ã, soit ¢), il arrête d'interpréter ou de compiler et va simplement chercher la citation correspondante. La chaîne de caractères à l'intérieur des guillemets est utilisée telle quelle. Des exemples de chaînes sont:

à ¢ â,¬Â "¢ Helloâ € ™ â € ¢

 € "Résultat final: à ¢ â,¬

Si vous souhaitez utiliser un guillemet dans une chaîne, vous devez utiliser des guillemets de l'autre type pour délimiter la chaîne entière.

 € ¢ Don panique â € ¢

Il a dit, â € "Botherà ¢ â,¬Â ¢

Il y a un autre moyen. Dans une chaîne, une paire de guillemets (du même type que celle utilisée pour délimiter la chaîne) est interprétée comme une de ces sortes.

 € ¢ Donà ¢ â,¬Â ¢ â,¬Â ¢ â,¬Â ¢ â,¬Â ¢  ¢ â ¢ ¢ â,¬Â ¢ â € ¢ panicâ €?)

"Il a dit," Bother "(même chose que" Il a dit, "â €" â € "â €? , ¬ Botherà ¢ â,¬Â "

2.4 Clauses

Votre programme NetRexx comprend un certain nombre de clauses. Une clause peut être:

  1. Une instruction de mot-clé qui indique à l'interprète de faire quelque chose; par exemple, disons le mot "â €"

Dans ce cas, l'interprète affichera le mot sur l'écran de l'utilisateur.

  1. Une cession; par exemple,

Message = à ¢ â,¬Â "Faites attention!  ¢ â,¬â" ¢

  1. Une clause nulle, telle qu'une ligne complètement vide, ou;
  2. Une instruction d'appel de méthode qui appelle une méthode d'une classe â € ¢ hiawathaâ € ¢ .left (2)

2.5 Quand une clause finit-elle?

Il est parfois utile de pouvoir écrire plus d'une clause sur une ligne, ou d'étendre une clause sur plusieurs lignes. Les règles sont:

. Habituellement, chaque clause occupe une ligne.

. Si vous voulez mettre plus d'une clause sur une ligne, vous devez utiliser un point-virgule (;) pour séparer les clauses.



. Si vous voulez qu'une clause couvre plus d'une ligne, vous devez mettre un tiret (trait d'union) à la fin de la ligne pour indiquer que la clause continue sur la ligne suivante. Si une ligne ne se termine pas par un tiret, un point-virgule est implicite.

Que verrez-vous sur l'écran lorsque cet exec est exécuté?

Listing 2.2: RAH Exec

1 / * Exemple: il y a six clauses dans ce programme * / dites "Everybody cheer!"

2 dites "2"; dites "4"; dites "6"; dites "8"; dire "Qui faisons-nous"?

3 "Appréciez?"

2.6 boucles

Nous pouvons continuer et écrire clause après clause dans un fichier source de programme, mais certaines actions répétitives dans lesquelles seulement une petite modification se produit, sont mieux gérées par l'instruction loop. Cela me rappelle toujours une anecdote racontée par Andy Hertzfield1:

Les antécédents de Bob étaient beaucoup plus forts dans le matériel que dans les logiciels, nous étions donc un peu sceptiques quant à son expertise en logiciels, mais il prétendait être aussi doué pour les deux. Son dernier projet était un effort rebelle, de type skunk-works pour faire une version à bas prix de l'Étoile appelée Cubada qui utilisait un microprocesseur Intel ordinaire (le 8086), qui était une hérésie pour l'orthodoxie PARC. , qui pensait que vous aviez besoin de processeurs à découpage de bits personnalisés pour obtenir des performances suffisantes pour une machine de type Star. Bob avait écrit une grande partie du logiciel pour Cub lui-même.

«J'ai beaucoup d'expérience en matière de logiciels», a-t-il déclaré, «en fait, j'ai personnellement écrit plus de 350 000 lignes de code» .Ã ¢ â,¬

Je pensais que c'était assez impressionnant, même si je me demandais comment c'était calculé. Je ne pouvais pas commencer à estimer honnêtement combien de code j'ai écrit, car il y a trop de façons différentes d'interpréter les choses.

Ce soir-là, je suis allé dîner avec mon ami Rich Williams, qui a commencé chez Apple à peu près en même temps que moi. Rich avait un grand sens de l'humour. Je lui ai parlé de l'interview que j'ai faite dans l'après-midi, et comment Bob Belleville a prétendu avoir écrit plus de 350 000 lignes de code.

- Eh bien, je parie qu'il a fait, dit Rich, mais il a découvert des boucles!

Imaginez une tâche d'imprimer soigneusement un tableau des taux de change pour les dollars et les euros pour référence dans un magasin. Nous pourrions bien sûr faire le programme suivant:

Listing 2.3: Sans une boucle

1 dire 1 'euro est égal à 1 * 2.34' dollars '

2 dire 2 'euro est égal à 2 * 2,34' dollars '

3 disent 3 'euro est égal à 3 * 2,34' dollars '

4 disent 4 'euro est égal à 4 * 2.34' dollars '

5 disent 5 'euro est égal à 5 ​​* 2.34' dollars '

6 dire 6 'euro est égal à 6 * 2.34' dollars '

7 disent 7 'euro est égal à 7 * 2,34' dollars '

8 disent 8 'euro est égal à 8 * 2,34' dollars '

9 disent 9 'euro est égal à 9 * 2.34' dollars '

10 disent 10 'euro est égal à 10 * 2,34' dollars '

Ceci est valable, mais imaginez la pensée alarmante que la liste est considérée comme un succès et vous êtes chargé d'en faire un nouveau, mais maintenant avec des valeurs allant jusqu'à 100. Ce sera beaucoup de dactylographie.

Pour ce faire, utilisez l'instruction loop2.

Listing 2.4: Avec une boucle

1 boucle i = 1 à 100

2 disons que 'euro vaut' i * 2,34 'dollars'

3 fin

Maintenant, la variable d'indice de boucle i varie de 1 à 100, et les instructions entre la boucle et la fin sont répétées, donnant la même liste, mais maintenant de 1 à 100 dollars.

Nous pouvons faire plus avec la déclaration en boucle, c'est extrêmement flexible. Le di-agram suivant est un (simplifié, car ici nous avons laissé de côté les prises et enfin les options) un aperçu des façons dont nous pouvons boucler un programme.

Quelques exemples de ce que nous pouvons faire avec ceci:

. Looping forever - mieux mis, sans décider à l'avance combien de fois

Listing 2.5: Boucle pour toujours

1 boucle pour toujours

2 dites 'un autre bonbon?'

3 x = demander

4 si x = 'déjà assez' alors partez

5 fin

L'instruction de congé casse le programme hors de la boucle. Cela semble futile, mais dans le chapitre sur les E / S, nous verrons à quel point c'est utile lors de la lecture de fichiers, dont nous ne savons généralement pas à l'avance combien de lignes nous lirons dans la boucle.

. Boucler pour un nombre fixe de fois sans avoir besoin d'une variable d'index de boucle

Listing 2.6: Boucle pour un nombre fixe de fois sans variable d'index de boucle



63