Bob -
The CompanyName is a *linked field* in the Contacts table, which makes it read-only. It is just a fake virtual field that is pulling from its real resting place, the Customers table.
Think of ABC Company:
Customer Table:
Name: ABC Company Inc. (this could be John Smith if it were a residential customer)
CompanyName: ABC Company Inc.
BillAddressAddr1: ABC Company Inc.
BillAddressAddr2: 123 Anywhere St.
Contacts Table, Contact #1:
Entity: ABC Company Inc. (this is a dropdown that connects the contact to ABC Company Inc.)
Name: Amy Johnson
Phone: 123-444-5555
Contacts Table, Contact #2:
Entity: ABC Company Inc.
Name: Wendy James
Phone: 123-567-6667
Contacts Table, Contact #3:
Entity: ABC Company Inc.
Name: Jack Jackson
Phone: 123-688-2343
See how there are 3 contact records for the same 1 customer? Since the CompanyName is coming from the Customer, it is just shown in the Contacts for display purposes only.
I think you probably just want to import into Customers instead. If you import into the Customers table, the Contact and the AltContact fields will actually do its own magic and create two contacts for you automatically (it's a special situation we help you out with).
Also - I'm not sure you want to mess around with the API unless you are a coder. Since that webinar came out, we produced a pretty awesome Import / Export tool under Customize > Integration Tools. Still under beta, but it is slick. Questions about that should go on the regular Q & A forum.
Hope that helps,
Paul