home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / programming / misc_programming / batnmore.z!p / READER.BTM < prev    next >
Text File  |  1992-11-15  |  2KB  |  76 lines

  1. *REM This batch file is Freeware, free to use and redistribute unmodified *
  2. *REM Jouni Miettunen * jon@stekt.oulu.fi * Oulu * Finland * Europe * 1992 *
  3.  
  4. REM Read special formatted text files via on-screen index table
  5. REM Timestamp 15-Nov-1992
  6.  
  7. break on^setlocal^unalias *
  8. if %#==0 .or. "%1"=="-?" goto info
  9. if "%@ascii[%1]"=="45" .and. not exist %1 goto optiot^goto index
  10.  
  11. :optiot
  12. set index=%@eval[%index+1]^set %@ascii[%@substr[%1,%index,1]]=1
  13. if %index lt %@eval[%@len[%1]-1] goto optiot^shift
  14.  
  15. REM Create index file
  16. :index
  17. iff not exist %1 then^echo Error: Cannot find %1^goto end^endiff
  18. Iff not exist %@name[%1].ind .or. "%[%@ascii[f]]"=="1" then
  19.     echos Creating %@upper[%@name[%1].ind] Index File...
  20.     del/q %@name[%1].ind>&nul
  21.     echo *** Exit ***>>%@name[%1].ind
  22.  
  23.     for %a in (@%1) if %@ascii[%a]==58 echo %a>>%@name[%1].ind
  24.  
  25. REM Create alphabetically ordered index file
  26.  
  27.     iff "%[%@ascii[a]]"=="1" then
  28.         iff "%@search[sort]" != "" then
  29.             type %@name[%1].ind|sort>%@name[%1].ind
  30.         else^echo Error: Can't find SORT^goto end
  31.         endiff
  32.     screen %_row 0 
  33.     endiff
  34. endiff
  35.  
  36. REM Select topic and show associated lines
  37. :choice
  38. set a=%@select[%@name[%1].ind,0,0,%_rows,%_columns, %@name[%1] Index ]
  39. REM ascii(*) == 42, needed for *** Exit ***
  40. if %@ascii[%a]==42 .or. "%a"=="" goto end
  41. screen %_row 0 Searching for %@word[0,%a] ...
  42. unset/q index
  43.  
  44. REM Problem: in output first TAB changed from column 8 to column 6. 4DOS 4.01 D
  45. for %z in (@%1) (
  46. iff %@ascii[%z]==58 then
  47.     iff "%z"=="%a" then^set index=1
  48.     else^if "%index"=="1" set index=2
  49.     endiff
  50. endiff
  51.  
  52. iff "%index"=="1" then^screen %_row 0 %zn
  53. elseiff "%index"=="2" then^goto out
  54. endiff
  55. )
  56.  
  57. :out
  58. echo.^pause^screen %@eval[%_row-1] 0 ^goto choice
  59.  
  60. :info
  61. echo Usage: %@lower[%@name[%0]] [-options] textfile.txt
  62. text
  63.  
  64.     -a    create index in alphabetical order
  65.     -d    delete index after use
  66.     -f    force creating new index
  67.     -?    this info
  68.  
  69. Let's you read special formatted text files via on-screen index.
  70. endtext
  71.  
  72. :end
  73. REM Delete index file, if that was requested...
  74. if "%[%@ascii[d]]"=="1" del/q %@name[%1].ind>&nul
  75. break off^quit
  76.