Harness: runner, generator, tasks T01 T13 T14 T15, CLAUDE.md

This commit is contained in:
Kral
2026-10-02 21:42:51 +02:00
commit 1c6c85492e
54 changed files with 3732 additions and 0 deletions

45
tasks/T01/spec.md Normal file
View File

@@ -0,0 +1,45 @@
# 1. Goal
Check the format and the checksum of an IBAN. A payment program calls the check
before it sends a payment. The program needs one reason code for each IBAN.
# 2. Open questions
None.
# 3. Context
- Interface {{P}}IF_IBAN_CHECK exists in package $TMP. It is active.
- The interface has the type TY_REASON (CHAR 10), the constant structure
C_REASON (OK, EMPTY, CHARS, COUNTRY, LENGTH, CHECKSUM), and one method:
CHECK IMPORTING iv_iban TYPE string RETURNING VALUE(rv_reason) TYPE ty_reason.
# 4. Contract
- Create the class {{P}}IBAN_VALIDATOR in package $TMP.
- The class is public, final, and has a public constructor without parameters.
- The class implements {{P}}IF_IBAN_CHECK.
- Do not add other public methods.
# 5. Business rules
Apply the rules in this sequence. Return the reason of the first rule that fails.
1. Remove all spaces. Convert all letters to upper case.
2. If the result is empty, return EMPTY.
3. The result must contain only the letters A to Z and the digits 0 to 9.
Positions 1 and 2 must be letters. Positions 3 and 4 must be digits. If not,
return CHARS.
4. Positions 1 and 2 are the country code. Use this list of codes and lengths:
DE 22, GB 22, TR 26, FR 27, NL 18, AT 20, CH 21. If the code is not in the
list, return COUNTRY.
5. If the length is not the length of the country, return LENGTH.
6. Calculate the checksum: move the first 4 characters to the end. Replace each
letter with a number (A = 10, B = 11, ..., Z = 35). Calculate the remainder
of this number divided by 97. If the remainder is not 1, return CHECKSUM.
7. Else return OK.
# 6. Constraints
- Release target: 7.58.
- Coding standards: Clean ABAP. Method length below 40 statements. No global
variables. No comment that restates the code.
- Out of scope: do not change {{P}}IF_IBAN_CHECK.
# 7. Acceptance
- The class is active and has no syntax error.
- The hidden tests pass.
- Write your own ABAP Unit tests for the class.