home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / prgramer / rexx / 4macrs / filter.rex < prev    next >
OS/2 REXX Batch file  |  1993-06-01  |  2KB  |  87 lines

  1. /* Filter */
  2. /* 
  3.    Creation        93/03/12 by  Thomas Korfhage, tel&fax ++49 6446 2931
  4.    History           
  5.  
  6.    Description
  7.    Filtering whole file or slected text with use of filter command
  8. */ 
  9. 'S_CLEAR_MACRO_OUTPUT'
  10. IF ARG() = 0 THEN 
  11. DO
  12.    'S_PROMPT Filter Command, args'
  13.    IF rc \= 0 THEN EXIT
  14.    IF args = "CANCEL" THEN EXIT
  15. END   
  16. ELSE DO
  17.    args = ARG(1) 
  18. END   
  19. 'S_GET_ENV_INFO SL_TEMP2 TempPath'
  20. TempPath = PathEndSlash(TempPath)
  21. NewClipName = TempPath || "TempFile.$$I"
  22. ClipInName = TempPath || "TempFile.$$O"
  23. 'S_GET_CLIP_FILENAME' OldClipName
  24. 'S_GET_SELECTED_SIZE Len'
  25. 'S_GET_CURR_EDITMODE' IsChanged
  26. IF IsChanged = READONLY THEN DO
  27.  'S_MSG File is readonly,,,URES'
  28.   EXIT
  29. END
  30. IF Len <= 1 THEN DO
  31.    'S_GET_COL_NUM' SavCol
  32.    'S_GET_LINE_NUM' SavLin
  33.    'S_GET_CURR_CHGSTATUS IsChanged'
  34.    'S_GET_CURR_FILENAME OrgName'
  35.    IF IsChanged = TRUE THEN  'S_SAVE_CURR_FILE'
  36.    'S_CHG_EDITMODE'
  37.    erase NewClipName
  38.    'S_SAVEAS_CURR_FILE' NewClipName
  39.    filtercommand = args || ' < ' || NewClipName || ' > '|| OrgName
  40.    filtercommand
  41.    URES = rc
  42.    IF URES = 0 THEN DO
  43.       'S_CLOSE_CURR_FILE'
  44.       'S_OPEN_SL_FILE 0 E N' OrgName
  45.       'S_GOTO_COL' SavCol
  46.       'S_GOTO_LINE' SavLin
  47.    END 
  48.    ELSE DO
  49.       'S_GET_REF_FILENAME 5' macro_out
  50.       IF URES <> 2 THEN DO
  51.          Copy OrgName TempPath || "Filter.ERR"
  52.          Copy NewClipName OrgName
  53.          say 'Error output in: ' TempPath || 'Filter.ERR'
  54.       END 
  55.       ELSE NOP    
  56.       'S_MSG ,Filter has ERROR - File is waiting,,URES'
  57.       'SLSTART' macro_out
  58.    END
  59.    EXIT
  60. END
  61. ELSE DO
  62.    'S_DISABLE_WINDOW'
  63.    'S_RENAME_CLIP_FILE' NewClipName
  64.    'S_CUT_SEL_TO_PASTE'
  65.    'S_COPY_PASTE_TO_CLIP'
  66.    filtercommand = args || ' < ' || NewClipName || ' > '|| ClipInName
  67.    filtercommand
  68.    IF rc = 0 THEN DO
  69.       'S_INSERT_FILE' ClipInName
  70.       'S_RENAME_CLIP_FILE' OldClipName
  71.    END 
  72.    ELSE  DO
  73.       'S_INSERT_PASTE'
  74.       'S_MSG Filter has ERROR - File is waiting,,,URES'
  75.       'S_GET_REF_FILENAME 5' macro_out
  76.       'SLSTART' macro_out
  77.    END
  78.   'S_ENABLE_WINDOW'
  79. END   
  80. EXIT
  81.  
  82. PathEndSlash: PROCEDURE
  83.    Path = ARG(1) 
  84.    IF Right(Path,1) \= "\" THEN Path = Path || "\"
  85.    RETURN Path 
  86. END   
  87.