This article will be appreciated by all of those that struggle with connectivity between SQL Server and the AS400. I would like to add three points that I think might help too.
1) If you are going to be updating the files (on the AS400 tables are commonly referred to as files) AS400 journals must be turned on.
2) Install the most recent MDAC. There were some problems with the communications layer in some earlier versions. The latest version corrects these issues.
3) I have found that encapsulating your SQL statements in a TSQL OPENQUERY command is often the best way to update, insert or delete AS400 records. I do this with a view. Then I can simply treat the view as a table and all is well. Here is an example for clarification:
CREATE view vMA400_AP_Detail as
SELECT * from OPENQUERY( MA400, 'select * from MA400.CMA99FIL.APXDTLPF')
Emphasis Technologies Inc.