I use the iSeries ODBC driver provided by IBM. Nothing fancy in the ODBC data source set up. Just the IP address, login info, and default db - everything else is left at default setting. There is a check box on the Translation tab which is not checked on our linked server.
I scripted out my linked server below - maybe you will see something....
I'm curious why you use the OPENQUERY syntax. When I query the AS400 via the linked server, I use the 4 part syntax lnksrv.db.schema.table which has always worked fine for me.
[/code="sql"] EXEC master.dbo.sp_addlinkedserver @server = N'linksvr', @srvproduct=N'dsnname', @provider=N'MSDASQL', @datasrc=N'dsnname', @catalog=N'dbname'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'linksvr',@useself=N'False',@locallogin=NULL,@rmtuser=N'login',@rmtpassword='########'
GO
EXEC master.dbo.sp_serveroption @server=N'linksvr', @optname=N'collation compatible', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'linksvr', @optname=N'data access', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'linksvr', @optname=N'dist', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'linksvr', @optname=N'pub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'linksvr', @optname=N'rpc', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'linksvr', @optname=N'rpc out', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'linksvr', @optname=N'sub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'linksvr', @optname=N'connect timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'linksvr', @optname=N'collation name', @optvalue=null
GO
EXEC master.dbo.sp_serveroption @server=N'linksvr', @optname=N'lazy schema validation', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'linksvr', @optname=N'query timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'linksvr', @optname=N'use remote collation', @optvalue=N'true'[/code]