К содержимому

Перевод кода, пара за парой

Java в COBOL

Одна и та же процедура, написанная руками на Java и на COBOL. Она здесь, чтобы вы увидели, что меняется, а что остаётся, до того как кто-то назовёт вам цену.

Было · Java

public static BigDecimal interest(BigDecimal balance, BigDecimal rate) {
    return balance.multiply(rate).setScale(2, RoundingMode.HALF_UP);
}

Во что это превращается · COBOL

       IDENTIFICATION DIVISION.
       PROGRAM-ID. INTEREST.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  WS-BALANCE     PIC S9(9)V99 COMP-3 VALUE 0.
       01  WS-RATE        PIC S9(1)V9(4) COMP-3 VALUE 0.0425.
       01  WS-INTEREST    PIC S9(9)V99 COMP-3.
       PROCEDURE DIVISION.
           COMPUTE WS-INTEREST ROUNDED = WS-BALANCE * WS-RATE
           DISPLAY 'INTEREST: ' WS-INTEREST
           STOP RUN.
Одна процедура: остаток умножить на ставку, округлить до копейки. На обоих языках её писал инженер, чтобы вы прочитали, как целевой код выглядит на самом деле.
Ниже одна процедура на двух языках. На настоящей системе тот же переезд идёт сразу по всему дереву: платформа читает все языки в нём параллельно, строит граф зависимостей, а границы режет инженер. Миллион строк это обычный размер такой работы, и она укладывается в тридцать дней.

Как это выглядит на всей вашей системе

На вашей настоящей кодовой базе тот же переезд отвечает на вопросы, которых пара файлов не покрывает: какие файлы уже никто не вызывает, какое батч-задание пишет в 02:00 запись, которую потом читает другое, и выдаёт ли переписанная версия те же числа, что ваши аудиторы видели в прошлом месяце. Аудит возвращает все три ответа за три-пять дней.