protocol

# `iso_13616_protocol`

Protocol for ISO 13616 IBAN structure parsing, checksum validation, and normalization.

Availability:
`logtalk_load(iso_13616(loader))`
Author: Paulo Moura
Version: 1:0:0
Date: 2026-05-05
Compilation flags:
`static`
Dependencies:
(none)
Remarks:
(none)
Inherited public predicates:
(none)

## Public predicates

### `iban/4`

Parses and validates an ISO 13616 IBAN atom into ISO 3166-1 alpha-2 country code, two-character check digits, and BBAN atom. Input may use lowercase letters and embedded spaces; successful results are normalized to uppercase compact components.

Compilation flags:
`static`
Template:
`iban(IBAN,CountryAlpha2,CheckDigits,BBAN)`
Mode and number of proofs:
`iban(+atom,?atom,?atom,?atom)` - `zero_or_one`

### `canonical_iban/2`

Returns the canonical electronic-format IBAN for a valid input by removing spaces and converting letters to uppercase.

Compilation flags:
`static`
Template:
`canonical_iban(IBAN,Canonical)`
Mode and number of proofs:
`canonical_iban(+atom,?atom)` - `zero_or_one`

### `formatted_iban/2`

Returns a valid IBAN formatted in groups of four characters separated by spaces.

Compilation flags:
`static`
Template:
`formatted_iban(IBAN,Formatted)`
Mode and number of proofs:
`formatted_iban(+atom,?atom)` - `zero_or_one`

## Protected predicates

(none)

## Private predicates

(none)

## Operators

(none)