STOCK BASED COMPENSATION (Tables)
   | 
9 Months Ended | 
Jul. 31, 2019  | 
| 2003 Share Plan [Member] | 
 
 | 
| STOCK BASED COMPENSATION (Tables) [Line Items] | 
 
 | 
| Share-based Payment Arrangement, Option, Activity [Table Text Block] | 
   |    Shares 
 |   |    Weighted  Average Exercise Price Per Share 
 |   |    Aggregate Intrinsic Value 
 | 
   |   Options outstanding at October 31, 2018 
 |    12,000 
 |   |    $ 2.77 
 |   |   | 
   |   Exercised 
 |    (4,000) 
 |   |    $ 3.63 
 |   |   | 
   |   Options outstanding and exercisable at     July 31, 2019 
 |    8,000 
 |   |    $ 2.34 
 |   |    $     23,694 
 | 
 
 
   |    Shares 
 |   |    Weighted  Average Exercise  Price Per Share 
 |   |    Aggregate  Intrinsic  Value 
 | 
    |   | 
    |   | 
   |   Options outstanding at October 31, 2017 
 |    30,600 
 |   |    $ 3.16  
 |   |   | 
   |   Exercised 
 |    (10,600) 
 |   |    $ 0.67  
 |   |   | 
   |   Forfeited 
 |    (8,000) 
 |   |    $ 7.04 
 |   |   | 
   |   Options outstanding and exercisable at     July 31, 2018 
 |    12,000 
 |   |    $ 2.77 
 |   |    $        13,054 
 | 
 
 
 | 
| Share-based Payment Arrangement, Option, Exercise Price Range [Table Text Block] | 
  |   Range of  Exercise Prices 
 |   |    Number  Outstanding  and  Exercisable 
 |   |    Weighted Average  Remaining  Contractual Life  (in years) 
 |   |    Weighted  Average  Exercise  Price 
 | 
    |   |   | 
    |   |   | 
    |   |   | 
   |   $ 0.67 - $17.00 
 |   |    8,000 
 |   |    0.19 
 |   |    $ 2.34 
 | 
 
 
  |   Range of  Exercise Prices 
 |   |    Number  Outstanding  and  Exercisable 
 |   |    Weighted Average  Remaining  Contractual Life  (in years) 
 |   |    Weighted  Average  Exercise Price 
 | 
    |   |   | 
    |   |   | 
    |   |   | 
   |      $ 0.67 - $17.00 
 |   |    12,000 
 |   |    .99 
 |   |    $ 2.77 
 | 
 
 
 | 
| 2010 Share Plan [Member] | 
 
 | 
| STOCK BASED COMPENSATION (Tables) [Line Items] | 
 
 | 
| Share-based Payment Arrangement, Option, Activity [Table Text Block] | 
   |    Shares 
 |   |    Weighted  Average Exercise  Price Per Share 
 |   |    Aggregate  Intrinsic  Value 
 | 
    |   |   | 
    |   |   | 
   |   Options outstanding at October 31, 2018 
 |    2,131,868 
 |   |    $ 2.11 
 |   |   | 
   |   Granted 
 |    10,000 
 |   |    $ 3.64 
 |   |   | 
   |   Exercised 
 |    (32,000) 
 |   |    $ 2.27 
 |   |   | 
   |   Forfeited 
 |    (99,200) 
 |   |    $ 3.78 
 |   |   | 
   |   Options outstanding at July 31, 2019 
 |    2,010,668 
 |   |    $ 2.03 
 |   |    $    5,422,886 
 | 
   |   Options exercisable at July 31, 2019 
 |    1,639,556 
 |   |    $ 1.92 
 |   |    $    4,609,165 
 | 
 
 
   |    Shares 
 |   |    Weighted  Average Exercise  Price Per Share 
 |   |    Aggregate  Intrinsic  Value 
 | 
    |   |   | 
    |   |   | 
   |   Options outstanding at October 31, 2017 
 |    1,637,246 
 |   |    $ 1.50 
 |   |   | 
   |   Granted 
 |    475,000 
 |   |    $ 3.22 
 |   |   | 
   |   Exercised 
 |    (38,000) 
 |   |    $ 0.67 
 |   |   | 
   |   Forfeited 
 |    (49,800) 
 |   |    $ 2.15 
 |   |   | 
   |   Options outstanding at July 31, 2018 
 |    2,024,446 
 |   |    $ 1.90 
 |   |    $    2,965,764 
 | 
   |   Options exercisable at July 31, 2018 
 |    1,284,190 
 |   |    $ 1.73 
 |   |    $    2,108,817 
 | 
 
 
 | 
| Share-based Payment Arrangement, Option, Exercise Price Range [Table Text Block] | 
   |    Options Outstanding 
 |   |    Options Exercisable 
 | 
    |   |    Number  Outstanding 
 |   |    Weighted  Average  Remaining  Contractual Life  (in years) 
 |   |    Weighted  Average  Exercise Price 
 |   |    Number  Exercisable 
 |   |    Weighted  Average  Remaining  Contractual Life  (in years) 
 |   |    Weighted  Average  Exercise  Price 
 | 
    |   |   |   |   |   |   | 
   |   Range of  Exercise Prices 
 |   |   |   |   |   |   | 
    |   |   |   |   |   | 
   |     
 |      
 |      
 |   |      
 |      
 | 
   |   $ 0.67 
 |   |    938,000 
 |   |    5.94 
 |   |    $ 0.67 
 |   |    799,388 
 |   |    5.59 
 |   |    $ 0.67 
 | 
   |   $ 2.27 -$ 3.01 
 |   |    600,134 
 |   |    3.81 
 |   |    $ 2.58 
 |   |    600,134 
 |   |    3.81 
 |   |    $ 2.58 
 | 
   |   $ 3.46 -$ 5.75 
 |   |    472,534 
 |   |    8.51 
 |   |    $ 4.05 
 |   |    240,034 
 |   |    8.19 
 |   |    $ 4.43 
 | 
 
 
   |    Options Outstanding 
 |   |    Options Exercisable 
 | 
    |   |    Number  Outstanding 
 |   |    Weighted  Average  Remaining  Contractual Life  (in years) 
 |   |    Weighted  Average  Exercise Price 
 |   |    Number  Exercisable 
 |   |    Weighted  Average  Remaining  Contractual Life  (in years) 
 |   |    Weighted  Average  Exercise  Price 
 | 
    |   |   |   |   |   |   | 
   |   Range of  Exercise Prices 
 |   |   |   |   |   |   | 
    |   |   |   |   |   | 
   |     
 |      
 |      
 |   |      
 |      
 | 
   |   $ 0.67 
 |   |    943,000 
 |   |    6.94 
 |   |    $ 0.67 
 |   |    653,142 
 |   |    6.18 
 |   |    $ 0.67 
 | 
   |   $ 2.27 -$ 3.01 
 |   |    729,712 
 |   |    5.21 
 |   |    $ 2.61 
 |   |    579,314 
 |   |    5.28 
 |   |    $ 2.60 
 | 
   |   $ 3.46 -$ 7.00 
 |   |    351,734 
 |   |    8.74 
 |   |    $ 3.73 
 |   |    51,734 
 |   |    1.46 
 |   |    $ 5.27 
 | 
 
 
 | 
| 2018 Share Plan [Member] | 
 
 | 
| STOCK BASED COMPENSATION (Tables) [Line Items] | 
 
 | 
| Share-based Payment Arrangement, Option, Activity [Table Text Block] | 
   |       Shares 
 |   |    Weighted  Average Exercise  Price Per Share 
 |   |    Aggregate  Intrinsic  Value 
 | 
    |   |   | 
    |   |   | 
   |   Options outstanding at October 31, 2018 
 |    3,482,000 
 |   |    $ 3.73 
 |   |   | 
   |   Exercised 
 |    (4,000) 
 |   |    $ 3.84 
 |   |   | 
   |   Forfeited 
 |    (8,000) 
 |   |    $ 3.84 
 |   |      
 | 
   |   Options outstanding at July 31, 2019 
 |    3,470,000 
 |   |    $ 3.73 
 |   |    $    3,337,300 
 | 
   |   Options exercisable at July 31, 2019 
 |    1,321,111 
 |   |    $ 3.73 
 |   |    $    1,273,443 
 | 
 
 
   |    Shares 
 |   |    Weighted  Average Exercise  Price Per Share 
 |   |    Aggregate  Intrinsic   Value 
 | 
    |   |   | 
    |   |   | 
   |   Options outstanding at October 31, 2017 
 |               -0- 
 |   |      
 |   |   | 
   |   Granted 
 |    3,422,000 
 |   |    $ 3.71 
 |   |   | 
   |   Options outstanding at July 31, 2018 
 |    3,422,000 
 |   |    $ 3.71 
 |   |    $               -0- 
 | 
   |   Options exercisable at July 31, 2018 
 |    167,779 
 |   |    $ 3.73 
 |   |    $               -0- 
 | 
 
 
 | 
| Share-based Payment Arrangement, Option, Exercise Price Range [Table Text Block] | 
   |    Options Outstanding 
 |   |    Options Exercisable 
 | 
   |   Range of  Exercise Prices 
 |   |    Number  Outstanding 
 |   |    Weighted  Average  Remaining  Contractual Life  (in years) 
 |   |    Weighted  Average  Exercise Price 
 |   |    Number  Exercisable 
 |   |    Weighted  Average  Remaining  Contractual Life  (in years) 
 |   |    Weighted  Average  Exercise Price 
 | 
    |   |   |   |   |   | 
    |   |   |   |   |   | 
    |   |   |   |   |   | 
    |   |   |   |   |   | 
    |   |   |   |   |   | 
   |   $ 3.70 -$ 4.61 
 |   |    3,470,000 
 |   |    8.78 
 |   |    $ 3.73 
 |   |    1,321,111 
 |   |    8.77 
 |   |    $ 3.73 
 | 
 
 
   |    Options Outstanding 
 |   |    Options Exercisable 
 | 
   |   Range of  Exercise Prices 
 |   |    Number  Outstanding 
 |   |    Weighted  Average  Remaining  Contractual Life  (in years) 
 |   |    Weighted  Average  Exercise Price 
 |   |    Number  Exercisable 
 |   |    Weighted  Average  Remaining  Contractual Life  (in years) 
 |   |    Weighted  Average  Exercise Price 
 | 
    |   |   |   |   |   | 
    |   |   |   |   |   | 
    |   |   |   |   |   | 
    |   |   |   |   |   | 
    |   |   |   |   |   | 
   |   $ 3.70 -$ 3.84 
 |   |    3,422,000 
 |   |    9.77 
 |   |    $ 3.71 
 |   |    167,779 
 |   |    9.76 
 |   |    $ 3.73 
 | 
 
 
 | 
| Stock Options Not Granted Under 2003 Share Plan 2010 Share Plan Or 2018 Share Plan [Member] | 
 
 | 
| STOCK BASED COMPENSATION (Tables) [Line Items] | 
 
 | 
| Share-based Payment Arrangement, Option, Activity [Table Text Block] | 
   |    Shares 
 |   |    Weighted  Average Exercise  Price Per Share 
 |   |    Aggregate  Intrinsic  Value 
 | 
    |   |   | 
    |   |   | 
   |   Options outstanding at October 31, 2018 
 |    1,780,000 
 |   |    $1.58 
 |   |   | 
   |   Options outstanding and exercisable at     July 31, 2019    
 |    1,780,000 
 |   |    $1.58 
 |   |    $    5,583,900 
 | 
 
 
   |    Shares 
 |   |    Weighted  Average Exercise  Price Per Share 
 |   |    Aggregate  Intrinsic  Value 
 | 
    |   |   | 
    |   |   | 
   |   Options outstanding at October 31, 2017 
 |    1,780,000 
 |   |    $ 1.58 
 |   |   | 
   |   Options outstanding and exercisable at     July 31, 2018   
 |    1,780,000 
 |   |    $ 1.58 
 |   |    $    3,206,700 
 | 
 
 
 | 
| Share-based Payment Arrangement, Option, Exercise Price Range [Table Text Block] | 
  |   Range of  Exercise Prices 
 |   |    Number  Outstanding  and  Exercisable 
 |   |    Weighted Average  Remaining  Contractual Life  (in years) 
 |   |    Weighted  Average  Exercise Price 
 | 
    |   |   | 
    |   |   | 
    |   |   | 
    |   |   | 
   |   $ 0.67  
 |   |    1,046,000 
 |   |    3.05 
 |   |    $ 0.67  
 | 
   |   $ 2.58-$ 5.56 
 |   |    734,000 
 |   |    2.59 
 |   |    $ 2.88  
 | 
 
 
  |   Range of  Exercise Prices 
 |   |    Number  Outstanding  and  Exercisable 
 |   |    Weighted Average  Remaining  Contractual Life  (in years) 
 |   |    Weighted  Average  Exercise Price 
 | 
    |   |   | 
    |   |   | 
    |   |   | 
    |   |   | 
   |   $ 0.67 
 |   |    1,046,000 
 |   |    4.05 
 |   |    $ 0.67 
 | 
   |   $ 2.58-$ 5.56 
 |   |    734,000 
 |   |    3.59 
 |   |    $ 2.88 
 | 
 
 
 |