Hi everyone,
It seems like WebXCOBOL, a Cobol to C++ transpiler, is moving faster than our WebXPHP, but all of them are moving strong.....
It comes with Forensic source tracking, especifically designed for Banking, Credital, Institutional and Goverment code.
Tonight's test:
Unfortunaly we lose some indentation...
IDENTIFICATION DIVISION.
PROGRAM-ID. INTEREST-CALC.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-CALC-DATA.
05 WS-PRINCIPAL PIC 9(9)V99 COMP-3 VALUE 10000.00.
05 WS-RATE PIC 9(2)V999 COMP-3 VALUE 0.052.
05 WS-PERIODS PIC 9(4) COMP VALUE 365.
05 WS-INTEREST PIC 9(9)V99 COMP-3.
05 WS-TOTAL PIC 9(9)V99 COMP-3.
01 WS-DISPLAY.
05 WS-DISP-PRINCIPAL PIC $ZZZ,ZZZ,ZZ9.99.
05 WS-DISP-INTEREST PIC $ZZZ,ZZZ,ZZ9.99.
05 WS-DISP-TOTAL PIC $ZZZ,ZZZ,ZZ9.99.
PROCEDURE DIVISION.
MAIN-LOGIC.
DISPLAY "--- INTEREST CALCULATION BENCHMARK ---"
COMPUTE WS-INTEREST = WS-PRINCIPAL * WS-RATE * (WS-PERIODS / 365.25)
COMPUTE WS-TOTAL = WS-PRINCIPAL + WS-INTEREST
MOVE WS-PRINCIPAL TO WS-DISP-PRINCIPAL
MOVE WS-INTEREST TO WS-DISP-INTEREST
MOVE WS-TOTAL TO WS-DISP-TOTAL
DISPLAY "PRINCIPAL: " WS-DISP-PRINCIPAL
DISPLAY "RATE: " WS-RATE
DISPLAY "PERIODS: " WS-PERIODS
DISPLAY "INTEREST: " WS-DISP-INTEREST
DISPLAY "TOTAL: " WS-DISP-TOTAL
STOP RUN./* WebXCOBOL Enterprise Output */
/* SOURCE-FILE: interest_calc.cob */
/* SOURCE-LINES: 35 */
// IDENTIFICATION DIVISION.
// PROGRAM-ID. INTEREST-CALC.
#include <iostream>
#include <string>
#include <cstdint>
#include <array>
#include <limits>
#include <cmath>
#include <iomanip>
#include "libwebxcob.h"
class interest__calc {
private:
bool cob_stopped = false;
enum ParaID { PARA_STOP = 0, PARA_INTEREST__CALC, PARA_MAIN_SECTION, PARA_MAIN_LOGIC };
/* ENVIRONMENT DIVISION */
// DATA DIVISION.
// WORKING-STORAGE SECTION.
struct {
CobPacked<11, 2, true> ws_principal = 10000.00; /* PIC 9(9)V99 */
CobPacked<5, 3, true> ws_rate = 0.052; /* PIC 9(2)V999 */
int16_t ws_periods = 365; /* PIC 9(4) */
CobPacked<11, 2, true> ws_interest; /* PIC 9(9)V99 */
CobPacked<11, 2, true> ws_total; /* PIC 9(9)V99 */
} ws_calc_data;
struct {
CobDecimal<11, 2, false> ws_disp_principal; /* PIC $ZZZ,ZZZ,ZZ9.99 */
CobDecimal<11, 2, false> ws_disp_interest; /* PIC $ZZZ,ZZZ,ZZ9.99 */
CobDecimal<11, 2, false> ws_disp_total; /* PIC $ZZZ,ZZZ,ZZ9.99 */
} ws_display;
/* LINKAGE SECTION */
CobString<1> xml_namespace; /* PIC X */
CobString<1> xml_namespace_prefix; /* PIC X */
CobDecimal<0, 0, false> xml_nnamespace; /* PIC N */
CobDecimal<0, 0, false> xml_nnamespace_prefix; /* PIC N */
CobDecimal<0, 0, false> xml_ntext; /* PIC N */
CobString<1> xml_text; /* PIC X */
// PROCEDURE DIVISION.
public:
int run (int argc, char *argv[]) {
ParaID next = PARA_INTEREST__CALC;
while (next != PARA_STOP && !cob_stopped) {
switch (next) {
case PARA_INTEREST__CALC: next = para_interest__calc(); break;
case PARA_MAIN_SECTION: next = para_main_section(); break;
case PARA_MAIN_LOGIC: next = para_main_logic(); break;
default: next = PARA_STOP; break;
}
}
return 0;
}
private:
ParaID para_interest__calc () {
return PARA_MAIN_LOGIC;
}
ParaID para_main_section () {
return PARA_STOP;
}
ParaID para_main_logic () {
// DISPLAY "--- INTEREST CALCULATION BENCHMARK ---"
std::cout << "--- INTEREST CALCULATION BENCHMARK ---" << std::endl;
// COMPUTE WS-INTEREST = WS-PRINCIPAL * WS-RATE * (WS-PERIODS / 365.25)
ws_calc_data.ws_interest = ((ws_calc_data.ws_principal * ws_calc_data.ws_rate) * (ws_calc_data.ws_periods / 365.25));
// COMPUTE WS-TOTAL = WS-PRINCIPAL + WS-INTEREST
ws_calc_data.ws_total = (ws_calc_data.ws_principal + ws_calc_data.ws_interest);
// MOVE WS-PRINCIPAL TO WS-DISP-PRINCIPAL
ws_display.ws_disp_principal = ws_calc_data.ws_principal;
// MOVE WS-INTEREST TO WS-DISP-INTEREST
ws_display.ws_disp_interest = ws_calc_data.ws_interest;
// MOVE WS-TOTAL TO WS-DISP-TOTAL
ws_display.ws_disp_total = ws_calc_data.ws_total;
// DISPLAY "PRINCIPAL: " WS-DISP-PRINCIPAL
std::cout << "PRINCIPAL: " << ws_display.ws_disp_principal << std::endl;
// DISPLAY "RATE: " WS-RATE
std::cout << "RATE: " << ws_calc_data.ws_rate << std::endl;
// DISPLAY "PERIODS: " WS-PERIODS
std::cout << "PERIODS: " << ws_calc_data.ws_periods << std::endl;
// DISPLAY "INTEREST: " WS-DISP-INTEREST
std::cout << "INTEREST: " << ws_display.ws_disp_interest << std::endl;
// DISPLAY "TOTAL: " WS-DISP-TOTAL
std::cout << "TOTAL: " << ws_display.ws_disp_total << std::endl;
// STOP RUN.
cob_stopped = true; return PARA_STOP;
return PARA_STOP;
}
};
int main (int argc, char *argv[]) {
(void)argc; (void)argv;
interest__calc program;
int result = program.run (argc, argv);
std::cout << "\nPress Enter to exit...";
std::cin.get();
return result;
}=====>
Bayron Landaverry
xBasePHP.com
(215)2226600 Philadelphia,PA, USA
MayaBuilders@gMail.com
Guatemala
FWH25.06--Harbour 3.0.0--BCC7.7--UEstudio 10.10
Windows 10
FiveWin, One line of code and it's done...
