home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 3 / Amiga Tools 3.iso / rexx / linecmd.raz < prev    next >
Encoding:
Text File  |  1994-06-15  |  2.0 KB  |  72 lines

  1. /** $VER: LineCmd.raz 1.0 (27.3.94)
  2.  **
  3.  ** Pour chaque ligne appelle une ou plusieurs commandes.
  4.  ** Les commandes doivent être séparées par des point-virgules.
  5.  ** Si des blocs sont tracés seules les lignes comprises dans
  6.  ** les blocks sont parcourues
  7.  **
  8.  ** Exemple : on veut mettre quelques lignes de texte entre
  9.  ** guillements pour en faire un tableau de chaînes pour le
  10.  ** langage C. On trace un bloc (ou plusieurs) sur les lignes
  11.  ** que l'on veut transformer, puis on execute le script avec
  12.  ** les paramètres suivants :
  13.  **
  14.  ** (les commandes doivent être séparées par des points-virgules)
  15.  **
  16.  ** AZur:Rexx/LineCmd.raz Text CONVERT '\t"'; Text COL -1 '",'
  17.  **/
  18.  
  19. OPTIONS RESULTS
  20. SIGNAL ON ERROR
  21. SIGNAL ON BREAK_C
  22.  
  23. /*------ Place les commandes dans un tableau de variables ------*/
  24.  
  25. PARSE ARG parameters    /* met la ligne d'arguments du script dans une variable */
  26.  
  27. numcmd = 0
  28. cmd = ''
  29. DO FOREVER
  30.     PARSE VAR parameters cmd ';' parameters    /* on prend chaque commande une par une dans 'cmd' */
  31.     IF (cmd == '') THEN LEAVE                  /* et on remet le reste dans 'parameters' */
  32.     numcmd = numcmd + 1
  33.     cmd_to_execute.numcmd = cmd
  34. END
  35.  
  36. /*------- Mémorise seulement les blocs à utiliser --------*/
  37.  
  38. 'GetNumBlocks'
  39. numblocks = RESULT
  40.  
  41. IF (numblocks = 0) THEN DO  /*------ tout le fichier ------*/
  42.     numblocks = 1
  43.  
  44.     'GetNumLines'
  45.     numlines.1 = RESULT
  46.     startline.1 = 1
  47. END
  48. ELSE DO                     /*------ ou seulement chaque bloc ------*/
  49.     DO block = 1 TO numblocks
  50.         'GetBlockInfo' block
  51.         PARSE VAR RESULT . . start . end .
  52.  
  53.         numlines.block = end - start + 1
  54.         startline.block = start
  55.     END
  56. END
  57.  
  58. /*------- Parcours les lignes du texte et exécute les commandes --------*/
  59.  
  60. DO block = 1 TO numblocks
  61.     DO line = 0 TO numlines.block - 1
  62.         /*------ place le curseur en début de chaque ligne ------*/
  63.         'Cursor' (startline.block + line) 1
  64.         /*------ exécute toutes les commandes dans une boucle ------*/
  65.         DO num = 1 TO numcmd; cmd_to_execute.num; END
  66.     END
  67. END
  68.  
  69. EXIT
  70. ERROR:
  71. BREAK_C:
  72.