SWIFT and BIC are two names for the same identifier: an 8 or 11-character code standardised by ISO 9362 that identifies a bank in the SWIFT payment network. For a wire to FNB, your sending bank needs this code (FIRNZAJJ) to route the payment message through correspondent banks to First National Bank in Johannesburg.
An IBAN, by contrast, identifies a specific bank account — not the institution. IBANs are mandatory in the European Economic Area, the UK, most of the Middle East, and several African countries (but South Africa does not use IBANs universally). For most wires to South Africa, you will supply SWIFT code FIRNZAJJ + the recipient's account number, not an IBAN.
UK sort codes (6 digits) and US routing numbers (9 digits) are domestic-only equivalents — they do not work for international wires. If a US-based sender wants to wire to FNB, they need the SWIFT code, not the US routing number of the correspondent bank (although their bank may use the routing number internally to route their side of the wire).
One final technical detail on the 11-character form: the last three characters identify a specific branch. When they read 'XXX' (as in FIRNZAJJXXX), they conventionally designate the head office itself. Most international wires use either the 8-character form or the 11-character form with XXX; unless your recipient explicitly tells you otherwise, that is the right choice.