| 1 | /************************************************************************
 | 
|---|
| 2 |  * Example of how a rexx file can operate on a list file created by     *
 | 
|---|
| 3 |  * FM/2 (the list file should contain filenames only, one per line).    *
 | 
|---|
| 4 |  *                                                                      *
 | 
|---|
| 5 |  * This example can be editted at the boxed comment area below and      *
 | 
|---|
| 6 |  * used with FM/2 Commands containing the %! metastring.                *
 | 
|---|
| 7 |  *                                                                      *
 | 
|---|
| 8 |  * Call as "%c /C <drive:\path\>EXAMPLE.CMD %!" (exclude quotes)        *
 | 
|---|
| 9 |  *  (for example:  %c /C e:\fm2\EXAMPLES.CMD %!)                        *
 | 
|---|
| 10 |  ************************************************************************/
 | 
|---|
| 11 | 
 | 
|---|
| 12 | /* suppress echo from "batch" commands */
 | 
|---|
| 13 | '@Echo off'
 | 
|---|
| 14 | /* clear screen (GPs). */
 | 
|---|
| 15 | '@cls'
 | 
|---|
| 16 | 
 | 
|---|
| 17 | /* get name of listfile from command line. */
 | 
|---|
| 18 | parse arg listfile
 | 
|---|
| 19 | 
 | 
|---|
| 20 | /* if no listfile name was given, issue help and exit. */
 | 
|---|
| 21 | if listfile = '' then
 | 
|---|
| 22 | do
 | 
|---|
| 23 |   say 'Give the name of a listfile as an argument to this REXX script.'
 | 
|---|
| 24 |   exit
 | 
|---|
| 25 | end
 | 
|---|
| 26 | 
 | 
|---|
| 27 | /* for debugging purposes: */
 | 
|---|
| 28 | say 'Name of our listfile is "'listfile'".'
 | 
|---|
| 29 | 
 | 
|---|
| 30 | /* see if the listfile given exists -- exit with error message if not */
 | 
|---|
| 31 | rc = stream(listfile,'C','QUERY EXISTS')
 | 
|---|
| 32 | if rc = '' then
 | 
|---|
| 33 | do
 | 
|---|
| 34 |   say 'File "'listfile'" doesn''t exist.'
 | 
|---|
| 35 |   exit
 | 
|---|
| 36 | end
 | 
|---|
| 37 | 
 | 
|---|
| 38 | /* attempt to open the listfile given on the command line */
 | 
|---|
| 39 | rc = stream(listfile,'C','OPEN')
 | 
|---|
| 40 | 
 | 
|---|
| 41 | /* if open was successful, enter loop */
 | 
|---|
| 42 | if rc = 'READY:' then
 | 
|---|
| 43 | do
 | 
|---|
| 44 |   counter = 0     /* initialize counter (debugging aid) */
 | 
|---|
| 45 | 
 | 
|---|
| 46 |   /* read each line of the listfile into filename */
 | 
|---|
| 47 |   do while lines(listfile) = 1
 | 
|---|
| 48 |     filename = linein(listfile)
 | 
|---|
| 49 | 
 | 
|---|
| 50 |     /* remove any leading/trailing blanks */
 | 
|---|
| 51 |     filename = strip(filename,'b')
 | 
|---|
| 52 | 
 | 
|---|
| 53 |     /* process only non-blank strings */
 | 
|---|
| 54 |     if filename \= '' then
 | 
|---|
| 55 |     do
 | 
|---|
| 56 |     /*************************************************************
 | 
|---|
| 57 |      * here you would do something to/with the file in filename. *
 | 
|---|
| 58 |      * since this is only an example, we'll just print the name. *
 | 
|---|
| 59 |      * note that you could do most anything to the file here --  *
 | 
|---|
| 60 |      * use your imagination.                                     *
 | 
|---|
| 61 |      *************************************************************/
 | 
|---|
| 62 | 
 | 
|---|
| 63 |       say filename  /* replace with your command(s)! */
 | 
|---|
| 64 | 
 | 
|---|
| 65 |     /*************************************************************
 | 
|---|
| 66 |      * end of area where you'd do your special processing.       *
 | 
|---|
| 67 |      *************************************************************/
 | 
|---|
| 68 |       counter = counter + 1 /* count files processed for debugging. */
 | 
|---|
| 69 |     end
 | 
|---|
| 70 |   end
 | 
|---|
| 71 | 
 | 
|---|
| 72 |   /* close the listfile. */
 | 
|---|
| 73 |   rc = stream(listfile,'C','CLOSE')
 | 
|---|
| 74 | 
 | 
|---|
| 75 |   /* remove the listfile -- checks to disallow wildcards in name (GPs). */
 | 
|---|
| 76 |   if (pos('*',listfile) = 0) & (pos('?',listfile) = 0) then
 | 
|---|
| 77 |   do
 | 
|---|
| 78 |     'del "'listfile'" 1>NUL 2>NUL'
 | 
|---|
| 79 |   end
 | 
|---|
| 80 | 
 | 
|---|
| 81 | end
 | 
|---|
| 82 | else /* couldn't open listfile */
 | 
|---|
| 83 | do
 | 
|---|
| 84 |   say 'Error opening "'listfile'".'
 | 
|---|
| 85 |   exit
 | 
|---|
| 86 | end
 | 
|---|
| 87 | 
 | 
|---|
| 88 | /* we're done -- issue count for debugging. */
 | 
|---|
| 89 | say '  **I processed 'counter' objects.'
 | 
|---|