| 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.' | 
|---|