LONG is not only an ugly and rigid data type, but also deprecated in favour of LOBs. So it should be avoided (unless you deal with the system data dictionary).
Weird though that you are seeing it (somehow) from a remote table.
Two possible things to look at.
I assume Oracle's Heterogeneous ODBC Agent is used for SQL-Server connectivity. The DSN used to SQL-Server can be configured ito how the ODBC interface treats data/types/etc from the remote database. I would have a look at it to ensure that LONGs are not somehow derived by the ODBC driver (from a SQL-Server memofield column for example).
Secondly, explicit data conversions can be used on SQL-Server and/or Oracle - enforcing string data types that will translate into actual varchar2 (max size of 4000 bytes) on the Oracle side.
Safest would be to do this on the SQL-Server as a view - and then use that view from Oracle.
Not sure what the syntax/method on SQL-Server is, but in Oracle the CAST( .. as VARCHAR2(n) ) function would be used.