French REXX

download French REXX

of 68

  • date post

    21-Jun-2015
  • Category

    Education

  • view

    8.421
  • download

    10

Embed Size (px)

description

Ce document est imprimable par rapport à l'original qui ne l'est pas. Le document original se trouve à cette URL: webplaza.pt.lu/dorkie/S390er/FrenchREXX-web2.pdf

Transcript of French REXX

  • 1. REXXS390er RE XXSur TSO/EG. ZiblianskiWWW.S390er.COMParutionMai 2006Publi parS390er1

2. REXXS390erEdition premire(Juin 2004)Seconde (novembre 2005)Troisime (Mai 2006)TrademarksIBM, REXX, ISPF, Dialog manager, DB2, COBOL, SDSF, sont les marquesdposes dIBM corp.2 3. REXX S390erIntroductionEst ce vraiment ncessaire ?Ce petit bouquin a pour but de vous apprendre les bases du REXX sous TSO (autant direMVS).Bien des bouquins traitent de REXX en montrant seulement les instructions et autres fonctionset leurs rsultats, mais si vous attaquez sous MVS. dailleurs comment fait-on pour crire unREXX et lexcuter sur MVS ?Connatre les instructions et autres fonctions, cest bienmais aprs ?Cest cette question que je comptre rpondre par le prsent ouvrage.Afin de rendre lapprentissage plus interressant, je vous prsenterai ici les bases pour crire desEXEC (attaquant diffrentes interfaces MVS telles que DB2, TSO, ISPF etc) qui vousmontreront le VRAI pouvoir de REXX sur MVS.Amusez vous bien ! !3 4. REXX S390erEdition2Novembre 2005Sommaire :Intro 3 REXX et ISPF suiteSommaire4 ISREDIT51REXX et DB252Histoire5 REXX comme du JCL. 56REXX et COBOL59Notions generales du REXX 7 Particularits MVS 60Les mots clefs9 MVS Open edition 65Variables A laide 67Ecrire un programme REXX10Conclusion 68Arithmetiques 11Tableaux plusieurs dimensions 12Structures de controleIF-then else 14Boucle (DO) 16SELECT19Mise en forme des donnesParsing 20Lecture/ecriture de fichiers23La pile (Stack) 27Interpret 28FonctionsBuilt-in29Ecrire des fonctions30 Interne30 Externe32Built-in function list (eng)33/35Debugging Execution36 Erreur 36 Tracing37REXX sur MVS38 REXX and ISPF Generalits41 PANELS 42 TABLES 43 VARIABLES47 LM services48 Select 49 Libdef 504 5. REXX S390erHistoire du REXXDe 1979 a 1982 un certain Mike Cowlishaw travaille sur un projet personnel (REX,estim 4.000 heures de travail), au laboratoire dIBM prs de Winchester en Angleterre et auWatson Research Center New York (USA).Ce projet est le developpement dun langageorient utilisateurs dont la syntaxe est facile comprendre par tous, structure et portable sur diffrentes plate-forme.Ainsi selon Mike Cowlishaw, cest le 20 Mars 1979 que REX est devenu ralit, en effet, Mikecest rveill trois heures du matin ce jour avec une ide claire de ce quil fallait et la finde la journe jenvoyais les specifications autour du monde pour commentaires. Proposrecueillis par Lee Peedin VP RexxLA.Originellement REX apparait plutot comme un langage de commandes prevu pour remplacer terme, LEXEC 2 de VM/SP, ainsi quil est spcifi dans un document interne dIBM areformed eXecutor REX. Initial specification du 29 mars 1979. En effet, dans ce document,Mike Cowlishaw compare les EXEC et EXEC2 REX, cette tendance sera confirme par unenote a SHARE de Mike Cowlishaw (REX A Command Programming Language date du 18Fevrier 1981), et insiste sur une meilleure lisibilit du langage, et une facilit daccs pour lesutilisateurs en gnral et pas seulement les informaticiens (dans son livre TRL voir plus bas,Mike crit quil a limit le nombre dinstructions du langage volontairement), ainsi que lapossibilit de structures de contrle.REX est distribu en interne chez IBM grce au systme de communication VNET dIBM, cequi contribuera de rapides changes entre les utilisateurs et le dveloppement.Ce nest qu la version 2.50 de REX quapparassent les notions de portabilit etdindpendance vis vis du systme dexploitation.Fin 1982, la version 3 de REX est sortie en interne chez IBM.Aprs cette priode de developement rapide la version system/370 de Mike Cowlishaw futintgre au systme VM/SP comme System Product Interpreter de CMS (diteur VM) en1983.Cela explique pourquoi beaucoup de spcialistes REXX viennent du monde VM.En 1983 (juillet) la version finale de REX est sortie en interne chez IBM, ce sera la dernireversion de REX prcurseur de REXX.1985 est lanne de la premire Edition de The REXX Language(a practical approach toprogramming) connu par les dveloppeurs REXX comme TRL, par Mike Cowlishaw.En 1987 IBM choisit REXX comme langage procdural pour les systmes SAA (systemsapplication architecture).En clair, REXX sera dornavant disponible sur MVS, OS400, OS/2 et bien sur VM, cest ainsiquen 1988 IBM sort la version 2 de TSO sur MVS avec le REXX intgr (en plus du langageCLIST).5 6. REXX S390er Histoire du REXXEn 1989 sort le compilateur REXX.En 1990 2eme dition de TRL par Mike Cowlishaw.En 1995 REXX sexcute sous CICS ! ! ! !En 2000 Nouvel environnement accessible par REXX : DB2 ! ! !Depuis REXX est sorti sur plusieurs plate-formes (PC, NETWARE, INTERNET) et enplusieurs versions :Object REXX, NETREXX, etc 6 7. REXXS390erNotions Gnrales du langage REXXUn REXX est form par des clauses termines par des points-virgules ( ;) implicitement parles biais de LINE END, explicitement si on code plusieurs ordres sur la mme ligne.En gros, une clause reprsente un ordre REXX et ne peut dpasser 250 caractres de long..Il existe 3 sortes de clauses :Null clauses (clauses nulles ou vides) :Il sagit de lignes laisses a blanc ou de commentaires totalement ignores par REXX lors delexcution, et seul les commentaires seront tracs (si codage).Une NULL CLAUSE nest pas une instructionLabelsUne clause ne comportant quun nom suivi de deux points est un label. Dans ce cas les deuxpoints agissent comme un point virgule, un label est donc une clause.Les labels sont utiliss pour identifies le code cible dun CALL, SIGNAL, dun appel defonction interne.Les labels sont traits commes des null clauses et peuvent tre tracs.InstructionUne instruction est constitue de une ou plusieurs clauses dcrivant une srie dactions a fairepar le language processor. Les instructions peuvent tre des Assignations (xx = value), desmots clef (voir plus bas), ou des commandes (des instructions passes au systme voir partieMVS).Ces clauses sont formes de TOKENS (jetons) pouvant tre :des chanes de caractres alphabtiques comprises entre ou . Leurs contenu sont desconstantes et ne sont donc jamais modifies par REXX.des chanes Hexadcimales (09 et a f ou A F). groupes par pair (sauf pour le 1er quipeut contenir un nombre impair de digit). Ces chanes sont gnralement suivies dun caractreX ou x pour indiquer que cest un chane Hexadcimale.Des Symboles. Ce sont des chanes de caractres alphanumriques non comprises entre ou que REXX manipule ainsi, un symbole peut tre une variable un mot clef ou mme uneoption, mais REXX agit dessus.Si REXX trouve une chane de caractre entre quotes, il nira pas regarder dedans (sauf SiUN ORDRE CALL prcde cette chane).Si rexx trouve une chane de caractre sans quotes, Cest un symbole il cherche :1 lexcuter. Et sil ne trouve aucune commande dans son jeu dinstructions ;2 linitialiser (variable) en Majuscule. 7 8. REXX S390erNotions GnralesPar dfaut les variables portent leurs noms de variables. Ainsi :SAY ERIC VALERIE retournera la mme chose que SAY ERIC VALERIEEt pourtant le premier say retournera des variables et le deuxime un champs littral.Ainsi :Retournera/* REXX */ERIC= GROS CON GROS CON T ES NULVALERIE=T ES NUL ERIC VALERIESAY ERIC VALERIESAY ERIC VALERIEEXITCOMMENTAIRES :les commentaires sont inclus entre /* et */ et ne peuvent dpasser 250 de long, il est possibledtendre un commentaire sur plusieurs lignes.CONTINUATION :Le caractre de continuation est la vurgule (,).En REXX, les clauses sont des lignes dordres dlimites par ; ou LINE END.Ces clauses sont faites de TOKENS et de COMMENTAIRES (ceux ci ne sont pas pris encompte.).Les symboles Entre quotes sont des chanes et ne seront pas excuts. Les symboles Non entrequotes seront soit excuts (si rexx les trouve dans ses instructions) soit initialiss leur nom.8 9. REXXS390erLES MOTS CLEFS (communs toutes les implmentations)Address env send a command to environment ENVAddress ISPEXEC display panel(panel1) Attention : lenvironnement nexiste pas forcment sur le SystmeArg Utilis pour recuperer les arguments passs au REXX .En fait cest la version courte de Parse upper ARGCALLappel dune routine interne ou externe. Sil y a des resultats, ils sont dans lavariable resultDOdpart de boucle (c.f control structures)DROPpour vider une variableEXITsortir (fin) dun EXEC (programme principal).IFExecution conditionelle du code (C ;F control structures).Iterate Recommencer (une boucle c.f control structures).Leave Quitter une boucle (c.f control structure).NOP ne fait rien.Parse Eclater un argument (c.f mise en forme de donnes).Procedure Protge les variables de lappelant en les rendant invisible lappel.Le paramtre EXPOSE rend les variables de lappelant spcifies visibles.Pushmettre dans le stack (LIFO, c.f stack).Queue Mettre dans le stack. (FIFO c.f stack).Returnretourne le contrle lappelant avec , le cas chant, un rsultat au pointdinvocation.SAY Affiche le texte qui suit, ou les valeurs des vairiables si elles sont initialises.SelectLa structure de cas (case structure).Signalgo to (c.f tracing et debugging)Trace Demarre ou arrete la fonction tracing (c.f tracing et debugging) 9 10. REXX S390erEcrire un programme REXX en TSOTout le monde peut faire ses premiers pas de REXX sous TSO (OS/390 V1R3) et oncommence gnralement par un programme qui affiche "Hello world!".Il est ncessaire davoir un PDS pour faire ces exercices, cest le seul pre-requisite.Nous allons assumer que vous connaissez loption 3.4 de ISPFAller dans votre PDS (librairies) crez un membre essai (Surtout ne choisissez pas TEST carcest une commande TSO) et tapez ce code :/* REXX */ This program says "Hello world!" say "Hello world!"sortez et sauvegardez (gnralement PF3 ) puis taper EX sur la ligne de votre REXXHello world! SafficheVous venez dexcuter votre premier REXX (on dit aussi EXEC)NOTES :Les Execs REXX commencent toujours par /* REXX */, Sauf si la rechercheautomatique de SYSEXEC est activeVu la simplicit du codage, nous commencerons toujours nos EXEC par /* REXX */.Nous allons attaquer les variables par le chapitre arithmtiqueVARIABLES arit